描述
项目中内链网址的 WebView 页面,在传入一个饿了么链接后(其他链接正常展示,如:http://www.baidu.com),无法正常展示并且开始疯狂闪烁,在 shouldOverrideUrlLoading 打印了下重定向的 url ,发现有两个 url 地址在循环跳转,也就是:问题链接 -> 链接1 -> 链接2 -> 链接1 -> …,使用系统浏览器正常展示,问题排查范围可以锁定在WebView的使用上了。
现象
webview加载白屏
排查
这次排查的重点放在 onGeolocationPermissionsShowPrompt 方法上,加个断电发现这个方法根本没有被调用,Google 之后发现不调用的情况只有一种:Android 7.0 以上版本,并且 url 链接是 http 的不安全链接。
,而我接口返回的地址正好是http的,
解决
直接上代码
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
new GetTitleAsync().execute(url);
WebView.HitTestResult hitTestResult = view.getHitTestResult();
// hitTestResult==null解决重定向问题
if (!TextUtils.isEmpty(url) && hitTestResult == null) {
view.loadUrl(url);
return true;
}
return super.shouldOverrideUrlLoading(view, url);
}