2

私は webview でアプリを作成しました。すべての内部リンクを webview に読み込み、外部リンクを android ブラウザーに読み込みます。今問題は、HTML広告を使用していて、広告をクリックすると外部ブラウザを開きたいのですが、Webビューで開くことです。広告のみの問題です。それ以外の場合はすべて正常に動作します。どうすればこれを行うことができますか?

私のコードは以下の通りです:

`クラス MyWebViewClient は WebViewClient を拡張します {

@Override   
public boolean shouldOverrideUrlLoading(WebView view, String url) { if (Uri.parse(url).getHost().equals("www.mysite.com")) {
    view.loadUrl(url);
    return true;
}else{

        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity(intent);
        return true;}}`
4

2 に答える 2

1

いくつかの変更を加えたところ、バナー広告で完全に機能しています。次の変更を加えました。

  • if 条件が変更されました。
  • ドキュメントにあるように、「if」ブロックに対して false を返しています。

WebViewClient が提供されている場合、true を返すとホスト アプリケーションが URL を処理することを意味し、false を返すと現在の WebView が URL を処理することを意味します。

@Override   
public boolean shouldOverrideUrlLoading(WebView view, String url) 
{ 
    if (url.contains("www.mysite.com")) 
    {
       view.loadUrl(url);
       return false;
    }else
    {
       Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
       startActivity(intent);
       return true;
    }
}
于 2014-01-03T07:36:17.163 に答える
1

コードは次のようにする必要があります。

@Override   
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (Uri.parse(url).getHost().equals("www.mysite.com")) {
        return true;
    }else{
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity(intent);
        return false;
    }
}

私が変更したのは次のとおりです。

1.) true を返すと、webview に URL が読み込まれます。view.loadUrl() は必要ありません。

2.) ACTION_VIEW インテントをブロードキャストするときに false を返す

于 2013-11-01T22:34:34.030 に答える