Androidはワンツーパンチ 三歩進んで二歩下がる

プログラミングやどうでもいい話

AndroidのWebViewでiFrame内のリンクをクリック時に外部ブラウザに飛ばす方法

WebViewにてURLで処理を制御する時にお馴染みですが、
WebViewClientのオブジェクトをWebViewにセットして、shouldOverrideUrlLoadingメソッドをoverrideする方法を取ります。
ですが、iFrame内のリンクをクリックした時はshouldOverrideUrlLoadingが呼ばれません。
iFrame内でリンク先が遷移するので、外部ブラウザに飛ばしたり他の処理をさせたい場合は別のメソッドをoverrideする必要があります。

onLoadResourceを使って例えば以下のように記述すると、iFrameのイベントを拾って外部ブラウザに遷移させることが出来ます。

            @Override
            public void onLoadResource(WebView view, String url) {
                if (url.contains("https://www.google.co.jp/")) {
                   mWebView.stopLoading();
                   final Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                   mActivity.startActivity(i);
                }
            }