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

tjrkku2a  于 2023-03-16  发布在  Android
关注(0)|答案(4)|浏览(291)

我有这个代码,但不是因为它的作品,它不断在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);
            }

            }
        }
zzlelutf

zzlelutf1#

问题是你需要发送一个Intent到默认的网页浏览器来打开链接。你所做的只是在你的Webview中调用一个不同的方法来处理链接。每当你想让另一个应用处理一些事情时,你需要使用Intents。试试下面的代码。

@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
    final String url = request.getUrl().toString();
    if (url.contains("message2space.es.vu")) {
        view.loadUrl(url);
    } else {
        Intent intent = new Intent(Intent.ACTION_VIEW, request.getUrl());
        startActivity(intent);
    }
    return true;
}
46scxncf

46scxncf2#

由于API级别24 shouldOverrideUrlLoading(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;
        }
    });
cidc1ykv

cidc1ykv3#

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;
            }
        });
vi4fp9gy

vi4fp9gy4#

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

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

相关问题