使用 android webview 在浏览器中打开外部链接
Posted
技术标签:
【中文标题】使用 android webview 在浏览器中打开外部链接【英文标题】:Open external links in the browser with android webview 【发布时间】:2013-08-02 10:00:33 【问题描述】:我有这个代码,但不是因为它有效,它一直在 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);
【问题讨论】:
【参考方案1】:问题是您需要将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;
【讨论】:
我们可以在 webview 链接上设置长点击监听器吗? 现在我已经做到了。但是应用程序崩溃,因为一些 ActivityNotFoundException。 @superUser 你应该提出你自己的问题。 @TheOnlyAnil 你应该提出你自己的问题。shouldOverrideUrlLoading
已弃用。【参考方案2】:
由于 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;
);
【讨论】:
太棒了,这很有魅力。这非常简单,因为它不涉及覆盖WebView
。也许@Jaumesv 可以使它成为新的例外答案,将其清楚地固定在顶部...
Request.getUrl() 具有最低 SDK 21 要求。【参考方案3】:
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;
);
【讨论】:
【参考方案4】:这是一个非常甜蜜和简短的解决方案
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
context.startActivity(i);
return true;
【讨论】:
以上是关于使用 android webview 在浏览器中打开外部链接的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android 上使用 Xamarin WebView 下载本机浏览器等文件?
Android - 使用外部浏览器在 WebView 中打开目标 _blank 链接