将相本无种,男儿当自强。这篇文章主要讲述如何在WebView Android中过滤手机和其他Web链接相关的知识,希望能为你提供帮助。
我想要的是在网页视图中保留链接,只要它们是网站的一部分,但外部链接应该启动到外部网络浏览器。另外在网站上我有电话链接的电话:555-323-2323,如果我使用电话号码下面的代码工作并启动手机应用程序但外部链接无法正常工作。
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
if (url.contains("tel:")) {
startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(url)));
return true;
} else {
return true;
}
if (Uri.parse(url).getHost().equals("www.example.com")) {
// This is my web site, so do not override;
let my WebView load the page
return false;
}
// Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
答案事情不起作用的主要原因是因为你有一个if-else而且两个分支都返回true。 else语句之后的所有代码都无法访问。删除else语句或更改该逻辑。
另一答案
- 删除第一个语句(
view.loadUrl(url)
)。 - 删除
else
第一个条件的一部分。
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.contains("tel:")) {
startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(url)));
return true;
}
if (Uri.parse(url).getHost().equals("www.example.com"))
// This is my web site, so do not override;
let my WebView load the page
return false;
// Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
另一答案【如何在WebView Android中过滤手机和其他Web链接】我使用这个解决方案:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.contains("tel:")) {
startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(url)));
return true;
}
if (Uri.parse(url).getHost().equals(URL)) {
// This is my web site, so do not override;
let my WebView load the page
return super.shouldOverrideUrlLoading(view, url);
}
return super.shouldOverrideUrlLoading(view, url);
}
推荐阅读
- 如何永久保存Android webview中的cookie()
- 在背景上每5分钟在Android应用程序中运行代码( [重复])
- Appcelerator Webview滚动到底部()
- 我错过了从Android webview打开谷歌地图的东西
- Android WebView是否需要打开外部URL的权限()
- Android蓝牙打印
- 如何为wpf c#application创建静默安装程序exe()
- Musical React App,我使用EC2,Lightsail还是S3
- Android Google+登录问题