现象:
Android的webview在加载一个url时,会循环执行shouldOverrideUrlLoading方法里的逻辑代码
代码:
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
doSomething();
// 没有view.loadurl
return true;
}
运行结果:可以看到shouldOverrideUrlLoading方法里的log循环输出
想问一下这是什么原因
你return false;试试
1、拦截要跳转的URL,判断是使用当前webview打开还是使用浏览器打开
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url != null && url.startsWith("geo")) { // 添加url判断
Intent intent = new Intent(Intent.ACTION_VIEW, Uri
.parse(url));
mContext.startActivity(intent);
return true;
}
return false;
}
2、安全校验,可以设置黑白名单判断是否允许该链接被打开
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url != null && !url.startsWith("geo")) { // 添加url判断
return true;
}
return false;
}
3、电话或者邮件拦截
<a href="tel:15990966490">打电话</a>
调用打电话功能:
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url != null && url.startsWith("tel:")) { // 添加url判断
Intent intent = new Intent(Intent.ACTION_CALL);
Uri data = Uri.parse(url);
intent.setData(data);
mContext.startActivity(intent);
return true;
}
return false;
}
4、判断是否是重定向URL
public boolean shouldOverrideUrlLoading(WebView view, String url) {
isRedirect = true;
return false;
}