私たちのアプリでは、webview を使用してビュー内に外部リンクをロードしています。loadurl メソッドを使用してリンクをロードし、プリローダーを表示するように webview クライアントを設定し、webview のリンクの変更をリッスンするように webchrome クライアントを設定しました。
URL が webview 内に読み込まれました。リンクが読み込まれると、いくつかの iframe があり、その中にテキスト リンクがあります。リンクをクリックすると、webview 自体ではなく、デフォルトのブラウザーでページを開く必要があります。
min-sdk / API レベル 8 を使用してプロジェクトをビルドします。以下は、参照用のコード スニペットです。Oncreate は、webview クライアントと webchromeclient を webview にアタッチし、URL をそれに割り当てます。
private class SomWebViewClient extends WebChromeClient{
public void onProgressChanged (WebView view, int newProgress){
if(newProgress == 100){
}
}
}
private class SomWebViewDefClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
@Override
public void onLoadResource (WebView view, String url){
if(url.equalsIgnoreCase("http://google.com")){
view.stopLoading();
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
view.canGoBack();
}
}
}
WebViewClient を webview に追加して、shouldOverrideUrlLoading メソッドで URL の変更を特定しようとしました。しかし、ここでキャプチャされたイベントはありません。webview url の iframe 内でクリックを処理する方法はありますか。
別のリンクを webview (iframe を持たない) で開いてみたところ、shouldOverrideUrlLoading 内でトリガーされたクリックをトレースできました。ただし、URL に iframe が含まれている場合、ユーザーが webview 内のリンクをクリックすると、shouldOverrideUrlLoading 内をトレースできず、新しいブラウザー ウィンドウではなく同じ webview 自体で開かれます。
問題を検索したとき、正確な問題を見つけることができませんでした。誰かが同様の問題に直面し、解決策を見つけた場合は、共有してください。
他に何か必要な場合は、お知らせください。
よろしくお願いします Srinivasan.C