0

Twitter にツイートを投稿できる Android アプリケーションで作業しており、Web ビュー ウィジェットを使用しています。ユーザーがログインしていない場合はログイン画面に移動し、ログインしているユーザーの場合はツイートページに移動します。私の要件は、アプリケーションからツイートした後、アプリケーションに戻る必要があることです。この状況を WebView でどのように処理できますか。WebView からリダイレクト URL を取得するにはどうすればよいですか。

私を助けてください。

私のコードを調べてください:

public class TestTwittershareActivity extends Activity {
    WebView webview;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        webview = (WebView) findViewById(R.id.webview);
        webview.getSettings().setJavaScriptEnabled(true);
        webview.loadUrl("http://www.twitter.com?status=");
        webview.setWebViewClient(new HelloWebViewClient());
    }

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
            webview.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    private class HelloWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);

            return true;
        }
    }
}
4

1 に答える 1

3

私が問題を正しく理解している場合、ユーザーがツイートの送信を完了したかどうかを確認する方法が必要です。最善の策は、webview に読み込まれている URL を確認することです。願わくば、この URL には、ツイートが完了したことを示す何らかの兆候が含まれていることを願っています (おそらく、ステータス部分に何かがあるのでしょうか?)。URL を確認するには、作成済みの HelloWebViewClient クラスを使用して、その onPageFinished メソッドをオーバーライドします。たとえば、次のようなものです。

@Override
public void onPageFinished(WebView view, String url) {
    super.onPageFinished(view, url);
    if (url.contains("status=DONE")) {
        // start your activity here
    }
}

ユーザーが終了した URL に基づいて検出できない場合、事態はさらに複雑になります。その場合、読み込まれたページの html を抽出できるようにする JavaScript を追加してみてください。ユーザーが完了したかどうかの手がかりを探すために html を解析する必要があります。

于 2012-04-26T19:02:35.033 に答える