広告 (私の広告ではありません) を表示する Web ビューがあります。問題は、ユーザーが「x」ボタンをクリックして広告を終了すると、広告がまだサイトに誘導されることです。広告を制御できないので、代わりに WebView 内でページの誘導/転送を無効にすることはできますか? つまり、ユーザーが私の webview 内のリンクをクリックしても何も起こらないはずです。
3 に答える
WebClient.shouldOverrideUrlLoading
メソッドを探しています。
webview.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading (WebView view, String url){
//True if the host application wants to leave the current WebView and handle the url itself, otherwise return false.
return true;
}
});
shouldOverrideUrlLoading を使用してみましたが、うまくいきませんでした。このメソッドは、html のロード時に 1 回だけ呼び出されるようです。その後、リンクをクリックしますが、メソッドは呼び出されません。
また、Youtube Player を埋め込んだ WebView も作成しています。WebView から広告リダイレクトを転送する代わりに、ブラウザーで広告を開くことを好みます。だから私は onLoadResource メソッドをオーバーライドします:
@Override
public void onLoadResource(final WebView view, final String url) {
if(url.indexOf("googleadservices.")>-1){
view.getSettings().setJavaScriptEnabled(false);
view.stopLoading();
view.postDelayed(
new Runnable(){
@Override
public void run(){
Uri uri=Uri.parse(url);
Intent i=new Intent(Intent.ACTION_VIEW,uri);
i.setClassName("com.android.browser","com.android.browser.BrowserActivity");
startActivity(i);
}
}
,100
);
}
}
出来た。広告リンクをクリックすると、広告サイトがよく表示される新しいブラウザが開き、WebView がリダイレクトされませんでした。戻るボタンを押すと、WebView が再び表示され、ビデオの視聴を続けることができます。
しかし、まだ問題がありました。ブラウザを開いて WebView に戻ることを何度も繰り返すと、WebView が広告サイトへのリダイレクトをブロックできなくなることがあります。広告サイトにリダイレクトされるだけです。運が良ければ100回開けては返す。ただ、何度か繰り返すだけで失敗することもありました。どうしてか分かりません。
誰でもそれを改善する方法について何か考えがありますか? または、広告のリダイレクトを無効にする別の方法はありますか?