読者です 読者をやめる 読者になる 読者になる

WebView.setWebViewClient

普通にWebViewでロードしようとすると、サイトによってはChromeを起動してしまう場合がある・・・。

f:id:BG1:20170109022016p:plain

Googleはそのまま表示される・・・。

f:id:BG1:20170109022047p:plain

しかし、Yahoo Japanの場合、

f:id:BG1:20170109022140p:plain

Chromeを起動して、そっちでロードしてしまう・・・。

そういう場合、WebViewClientのshouldOverrideUrlLoadingをオーバーライドして、Chromeを起動せずにWebViewでロードするようにしないといけない・・・。

WebView | Android Developers

setWebViewClientは、WebViewに新たにカスタマイズしたWebViewClientをセットするメソッド・・・。

activity_main.xmlに、

urlbar、loadbutton、そしてwebview・・・。
(layout_weightなどのレイアウト周りを改めたので、今度はきっちりレイアウト・・・。)

webViewをfindViewByIdで取得したら、setWebViewClientにnewでカスタマイズしたWebViewClientをセットする・・・。
オーバーライドするのはshouldOverrideUrlLoading・・・。
ここで戻り値をfalseにするだけ・・・。
trueだと、その先のロード処理をWebViewが行わず、他のアプリに投げる・・・。
falseだと、WebViewで処理するということになっている・・・。

f:id:BG1:20170109023004p:plain

改めて、Yahoo Japanをロードすると、

f:id:BG1:20170109023056p:plain

今度はちゃんとWebViewでロードできている・・・。

Sample/android/WebView/setWebViewClient/src/WebView at master · bg1bgst333/Sample · GitHub