[Android]WebViewClient::shouldOverrideUrlLoading

shouldOverrideUrlLoadingは、WebViewでローディング(画面更新)をハンドリングする機能です。

WebViewClient::shouldOverrideUrlLoadingの動作について

WebViewClientクラスのメソッドで個人的に使いそうなもの。

  • shouldOverrideUrlLoading(WebView view, String url)
    URLロード前に呼ばれる
  • onPageFinished(WebView view, String url)
    ページ読み込み完了時に呼ばれる
  • onPageStarted(WebView view, String url, Bitmap favicon)
    ページ読み込み開始時に呼ばれる
  • onReceivedSslError(WebView view, SslErrorHandler handler, SslError error)
    SSLエラー時に呼ばれる

公式をみるとメソッドは他にもたくさんあります。

公式:android.webkit.WebViewClient
https://developer.android.com/reference/android/webkit/WebViewClient

処理概要

アプリ側で最初にWebviewを起動してURLを開いたときは、shouldOverrideUrlLoadingは呼ばれます。

その起動した後、そこで表示したURLのなかにボタンなどがあり、そこを押して他のURLに飛ぼうとするときには、shouldOverrideUrlLoadingは呼ばれません。

onPageStartedとかは呼ばれます。
もしここで、別のリンクを開いたりするとまた、shouldOverrideUrlLoadingが呼ばれます。

設計時の注意

ページを表示するまでに何回かリダイレクトを行うようなページを開く場合は、その処理フローを把握して、適切な処理を実装してあげること。

※何回もshouldOverrideUrlLoadingなどが呼ばれることになるので、下手するとループしたり、設定が反映されなくなったりします。

過去に、認証処理を行うページを開くケースで、UserAgentの設定にハマったことがあります。。。

コメント

タイトルとURLをコピーしました