2

特定のサイトのすべてのWebページ(たとえば、www.yahoo.com)をWebビューで開き、他のすべてのWebページをdefaultbrowserで開くアプリを作成しようとしています。これが私が使用しているコードですが、完全に機能させることはできません。

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (Uri.parse(url).getHost().equals("http://www.yahoo.com")) {
            // This is my web site, so do not override; let my WebView load
            // the page
            return false;
        }
        // Otherwise, the link is not for a page on my site, so launch
        // another Activity that handles URLs
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity(intent);
        return true;
    }
}

このコードは機能するはずですが、yahooをロードすると、外部のブラウザに移動します。どんな助けでもいただければ幸いです。ありがとう!

4

3 に答える 3

4

別の方法を次に示します。

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    String urlHost = Uri.parse(url).getHost();
    switch (urlHost) {
        case "yahoo.com":
            return false;
        case "www.yahoo.com":
            return false;
        case "m.yahoo.com":
            return false;
        default:
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);
            return true;
    }
}
于 2016-03-11T05:50:44.193 に答える
1

getHost()通常はドメイン名のみを返すか、www.接頭辞を付けて返す場合があります。http://プロトコルAFAIKが含まれることはありません。使用してみてください:

if ((Uri.parse(url).getHost().equals("yahoo.com")) ||  (Uri.parse(url).getHost().equals("www.yahoo.com")) ||  (Uri.parse(url).getHost().equals("m.yahoo.com"))) {
    //Your code
于 2013-02-10T20:29:14.050 に答える