WebView 链接点击打开默认浏览器
Posted
技术标签:
【中文标题】WebView 链接点击打开默认浏览器【英文标题】:WebView link click open default browser 【发布时间】:2011-05-12 21:13:47 【问题描述】:现在我有一个加载 web 视图的应用程序,所有点击都保留在应用程序内。我想做的是,当在应用程序中单击某个链接(例如,http://www.google.com)时,它会打开默认浏览器。如果有人有什么想法,请告诉我!
【问题讨论】:
【参考方案1】:由于这是有关 WebView 中外部重定向的首要问题之一,因此这里有一个 Kotlin 上的“现代”解决方案:
webView.webViewClient = object : WebViewClient()
override fun shouldOverrideUrlLoading(
view: WebView?,
request: WebResourceRequest?
): Boolean
val url = request?.url ?: return false
//you can do checks here e.g. url.host equals to target one
startActivity(Intent(Intent.ACTION_VIEW, url))
return true
【讨论】:
【参考方案2】:WebView webview = (WebView) findViewById(R.id.webview);
webview.loadUrl(https://whatoplay.com/);
您不必包含此代码。
// webview.setWebViewClient(new WebViewClient());
改为使用下面的代码。
webview.setWebViewClient(new WebViewClient()
public boolean shouldOverrideUrlLoading(WebView view, String url)
String url2="https://whatoplay.com/";
// all links with in ur site will be open inside the webview
//links that start ur domain example(http://www.example.com/)
if (url != null && url.startsWith(url2))
return false;
// all links that points outside the site will be open in a normal android browser
else
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
);
【讨论】:
【参考方案3】:我今天必须做同样的事情,我在 *** 上找到了一个非常有用的答案,我想在这里分享,以防其他人需要它。
Source(来自sven)
webView.setWebViewClient(new WebViewClient()
public boolean shouldOverrideUrlLoading(WebView view, String url)
if (url != null && (url.startsWith("http://") || url.startsWith("https://")))
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
else
return false;
);
【讨论】:
这个答案对我帮助很大!谢谢! 请注意,如果 url 是相对的(不以“http://”开头),那么它将在应用程序内打开。为了避免这种情况,总是返回 true 并使相对 url 链接什么都不做。 您应该检查前缀中的其他协议,例如 rtsp、https 等。如果链接旨在打开媒体,则应将其重定向到设备的媒体播放器。如果没有协议前缀,则识别并提供一个。 确切地说,我正在搜索。谢谢 请注意shouldOverrideUrlLoading(WebView view, String url)
在 API 24 中已弃用。请检查 this answer。【参考方案4】:
您只需要添加以下行
yourWebViewName.setWebViewClient(new WebViewClient());
查看this 获取官方文档。
【讨论】:
【参考方案5】:您可以为此使用 Intent:
Uri uriUrl = Uri.parse("http://www.google.com/");
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
startActivity(launchBrowser);
【讨论】:
【参考方案6】:您可以为此使用 Intent:
Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("your Url"));
startActivity(browserIntent);
【讨论】:
你应该使用 Intent.ACTION_VIEW以上是关于WebView 链接点击打开默认浏览器的主要内容,如果未能解决你的问题,请参考以下文章
使用 android webview 在浏览器中打开外部链接
让我开发的应用程序浏览器被识别为“默认打开”android功能