以下のコードを使用して、Twitter ログイン ページを表示しました。
初めて、それは呼び出しpublic void onPageStarted----->public void onPageFinished(WebView view, String url)
ており、ログインした後、URLをリダイレクトして呼び出していpublic boolean shouldOverrideUrlLoading()
ます。したがって、フローは次のようになります。
onPageStarted
onPageFinished
shouldOverrideUrlLoading
しかし、ログアウトして 2 回目に来ると、上記のような同じフローが期待されますが、フローは次のように変更されました。
onPageStarted
shouldOverrideUrlLoading
onPageFinished
なぜこれが変わったのか、shouldOverrideUrlLoading()
以前はURLがなかったのになぜ呼び出しているのか理解できませんでした。
私はwebviewsのURLを印刷しましたがnull
、それでもこのメソッドにリダイレクトしている理由です。
private class TwitterWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d(TAG, "Redirecting URL " + url);
if (url.startsWith(TwitterApp.CALLBACK_URL)) {
mListener.onComplete(url);
Log.e("starts","starts with");
TwitterDialog.this.dismiss();
return true;
} else if (url.startsWith("authorize")) {
Log.e("authorize","authorization");
return false;
}
return true;
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Log.d(TAG, "Page error: " + description);
super.onReceivedError(view, errorCode, description, failingUrl);
mListener.onError(description);
TwitterDialog.this.dismiss();
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.e("page started in",url);
Log.d(TAG, "Loading URL: " + url);
super.onPageStarted(view, url, favicon);
mSpinner.show();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
String title = mWebView.getTitle();
if (title != null && title.length() > 0) {
Log.e("title","settitle");
mTitle.setText(title);
}
mSpinner.dismiss();
}
}