使用android webview在浏览器中打开外部链接

时间:2013-08-01 12:57:34

标签: android browser webview hyperlink external

我有这个代码,但不是因为它有效,它在webview中保持打开,我想要的是链接不属于我的网站在默认浏览器中打开。任何的想法?感谢

private class CustomWebViewClient extends WebViewClient {
        @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
              if(url.contains("message2space.es.vu")){
                view.loadUrl(url);
                return true;
            }else{
                return super.shouldOverrideUrlLoading(view, url);
            }

            }
        }

4 个答案:

答案 0 :(得分:73)

问题是您需要将Intent发送到默认Web浏览器以打开链接。您正在做的只是在Webview中调用另一种方法来处理链接。每当你想要另一个应用程序处理你需要使用Intents的东西。请尝试使用此代码。

private class CustomWebViewClient extends WebViewClient {
        @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
              if(url.contains("message2space.es.vu")) {
                view.loadUrl(url);
              } else {
                Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(i);
              }
              return true;
            }
        }

答案 1 :(得分:8)

由于API级别24 .dump已弃用。

最新解决方案:

shouldOverrideUrlLoading(WebView view, String url)

答案 2 :(得分:3)

这是非常甜蜜和简短的解决方案

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    context.startActivity(i);
    return true;
}

答案 3 :(得分:0)

 webView.setWebViewClient(new WebViewClient()   {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {

                if((String.valueOf(request.getUrl())).contains("paramedya.com.tr")) {
                    view.loadUrl(String.valueOf(request.getUrl()));
                } else {
                    Intent intent = new Intent(Intent.ACTION_VIEW, request.getUrl());
                    view.getContext().startActivity(intent);
                }

                return true;
            }
        });