33

WebView私はウェブサイトを表示するを構築します。ウェブサイトには、target="_blank"属性のないリンクと属性のあるリンクが含まれています。

target外部の標準デバイス ブラウザで定義されたリンクと、WebView 内で定義されていないリンクを開く必要があります。

私は を使用してWebViewClientおり、この機能を試してみましたが、それでもすべてのリンクが 内で開かれていますWebView:

代替案 1:

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {

    return super.shouldOverrideUrlLoading(view, url);        
}

代替案 2:

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {

    view.loadUrl(url);
    return true;        
}

空のリンクを外部から開く方法を知っている人はいますか?

ありがとう!

PS:誤解を避けるために:リンクを外部で開く必要があることを知っている唯一の方法は属性であるため、このアプローチは使用できません。target

4

5 に答える 5

5

私は同じ問題に直面しました。アプリケーション内で Web サイトのページを開き、残りのすべてのページをデフォルト ブラウザで開く必要がありました。1つのテクニックを使用しました。URL に自分の Web サイト名が含まれている場合は、それを WebView で開き、既定のブラウザーで開いたすべての Web サイトを残ります。

以下のコードを見つけてください。このような問題に直面したすべての人にとって役立つことを願っています。

private class MyBrowser extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.contains("/internetgeeks")) {
            browser.loadUrl(url);
            return false;
        } else {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse(url));
            startActivity(intent);
            return true;
        }
    }
}
于 2015-03-13T21:38:16.063 に答える
1

私も同じ問題を抱えており、今では解決策を見つけました。

また、WebChromeClient を使用する必要があります。これこれが表示されます。また、WebViewClient を新しい WebView に設定し、shouldOverrideUrlLoading メソッドをオーバーライドすると、URL を取得して、ここで必要なことを実行できます。WebViewClient を設定しない場合は、それも機能するはずです。私の場合、URL を取得したいので、WebViewClient を新しい WebView に設定します。

ところで、古い WebView を削除すると、ブラウザから戻ったときに WebView が空白になります。そのため、webview を保持して新しいものを追加しましたが、可視性を "gone" に設定しました。

于 2013-08-27T06:32:35.433 に答える