在android8.0 系统手机 上访问一个https的网站,他会自动跳转到另一个https域名上去,
然后我在shouldOverrideUrlLoading()方法中拦截了要跳转的链接,追加要用的参数,mWebView.loadUrl(mUrl) 去加载
然后就没有反应了,状态监听也没有任何回调,抓包也没有任何请求发出去。
android8.0以下的系统都是正常的,有没有大神知道啊
网页js跳转的方法使用的是window.location.href,页面也没有表单提交
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (subUrl.startsWith(actUrl)) {
String addedUrl = addThirdPartyActivity(mUrl);
mWebView.loadUrl(mUrl);
return true;
}
return false;
}
webview.loadUrl(url);
view.loadUrl(url);
我的8.0都可以,你的是什么机型出现这个的问题
希望你能仔细审查你的代码,你点击后返回的是url
if (subUrl.startsWith(actUrl)) {
String addedUrl = addThirdPartyActivity(mUrl);
mWebView.loadUrl(mUrl);
return true;
}
return false;
}
所以你的问题很明显,就是没有处理url,而直接返回了false,其结果就是不做任何处理
Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return super.shouldOverrideUrlLoading(view, request);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return super.shouldOverrideUrlLoading(view, url);
}
这两个方法都试下
用的是华为手机
里面业务比较多 把关键代码抽出来了
addThirdPartyActivity()方法是对全局muUrl做处理 添加用户信息和加密参数,数据反复验证过是没用问题的
走的是返回true的那个分支
第一个链接到第二个链接是服务器重定向过去的
重定向的第二个链接我把他单独打开也没有问题
第一个怀疑证书https问题 但是并没用看到返回证书报错的回调
第二个怀疑js跨域
第三个怀疑谷歌8系统又偷偷改啥了 android的webview贼坑 但是又差不多又啥问题
简单说就是 shouldOverrideUrlLoading 中加载loadurl不加载