Android WebView链接单击打开默认浏览器
现在我有一个应用程序可以加载网络视图,所有的点击都保存在这个应用程序中。我想做的是,例如,当在应用程序中单击某个链接时,它会打开默认浏览器。如果有人有什么想法,请告诉我 您可以使用Intent来实现以下目的:Android WebView链接单击打开默认浏览器,android,android-webview,android-browser,Android,Android Webview,Android Browser,现在我有一个应用程序可以加载网络视图,所有的点击都保存在这个应用程序中。我想做的是,例如,当在应用程序中单击某个链接时,它会打开默认浏览器。如果有人有什么想法,请告诉我 您可以使用Intent来实现以下目的: Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("your Url")); startActivity(browserIntent); Uri uriUrl = Uri.parse("ht
Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("your Url"));
startActivity(browserIntent);
Uri uriUrl = Uri.parse("http://www.google.com/");
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
startActivity(launchBrowser);
我今天也做了同样的事情,我在StackOverflow上找到了一个非常有用的答案,我想在这里分享,以防其他人需要它 (来自)
您可以为此使用意图:
Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("your Url"));
startActivity(browserIntent);
Uri uriUrl = Uri.parse("http://www.google.com/");
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
startActivity(launchBrowser);
您不必包含此代码
// 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;
}
}
});
您只需要添加以下行
yourWebViewName.setWebViewClient(new WebViewClient());
查看官方文档。由于这是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
}
}
你应该使用Intent.ACTION\u view这个答案对我帮助很大!谢谢请注意,如果url是相对的(不是以“http://”开头),那么它将在应用程序内部打开。为了避免这种情况,请始终返回true并使相对url链接不起任何作用。您应该检查前缀中的其他协议,如rtsp、https等。如果链接旨在打开媒体,则应将其重定向到设备的媒体播放器。如果没有协议前缀,那么确定并提供一个。确切地说,我正在搜索的内容。感谢API 24中不推荐使用
应覆盖url加载(WebView视图,字符串url)
。检查。