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

Zinc #3 一部のサイトでChromeにリダイレクトする動作を防止

実は一部のサイトでは指定したURLをWebViewが表示してくれない場合がある・・・。

これまでのバージョンで、

f:id:BG1:20160701103313p:plain

Yahoo! Japanを表示しようとすると、

f:id:BG1:20160701103453p:plain

Chromeが起動して、そちらで表示してしまう・・・。

WebViewで表示するようにするにはWebViewClientを継承したクラスをWebViewにセットする必要がある・・・。

f:id:BG1:20160701105913p:plain

Java Classから、

f:id:BG1:20160701105927p:plain

CustomWebViewClientという名前で追加・・・。

WebViewClientを継承したCustomWebViewClientを定義・・・。
shouldOverrideUrlLoadingは新たなURLでロードする時に呼ばれるハンドラ・・・。
ここの戻り値をfalseにすると、WebView内で表示してくれる・・・。
※.Android API Level 24(Android N?)では、第2引数がStringのものはduplicateになる模様・・・。
ここではとりあえず、新しいバージョンと古いバージョンを2つ並べている・・・。
WebViewClient | Android Developers

あとは、

webView.setWebViewClientでCustomWebViewClientのインスタンスをセットすればいい・・・。

f:id:BG1:20160701105005p:plain

ちゃんとWebView内に表示された・・・。

https://github.com/bg1bgst333/Zinc/tree/develop/android/empty_activity/android_studio/src/Zinc