46

我有这段代码,但不是因为它有效,它一直在 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

4 回答 4

94

问题是您需要向默认 Web 浏览器发送Intent才能打开链接。您所做的只是在您的 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;
            }
        }
于 2013-08-01T13:03:38.483 回答
27

由于 API 级别 24shouldOverrideUrlLoading(WebView view, String url)已弃用。

最新解决方案:

    webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            Intent intent = new Intent(Intent.ACTION_VIEW, request.getUrl());
            view.getContext().startActivity(intent);
            return true;
        }
    });
于 2017-07-08T17:52:52.477 回答
7
 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;
            }
        });
于 2019-10-05T21:16:15.210 回答
5

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

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    context.startActivity(i);
    return true;
}
于 2015-08-20T10:43:35.640 回答