描述
项目中内链网址的 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);
}
本文主要介绍了在Android项目中,WebView在加载特定的饿了么链接时出现页面闪烁和无限重定向的问题。问题源于在Android 7.0及以上版本,WebView不再自动处理http链接。解决方案是在shouldOverrideUrlLoading方法中进行处理,通过检查hitTestResult是否为null来避免重定向循环,并确保加载URL。此外,还提供了相关的代码片段作为解决此类问题的参考。
7135

被折叠的 条评论
为什么被折叠?



