首页 > 系统 > Android > 正文

Android中WebView加载Url时出现域名连接重定向时返回控制死循环的问题

2019-11-09 14:40:43
字体:
来源:转载
供稿:网友
Bug时时有,今天特别多。 你们有试过加载WebView由于H5 CSS样式中有特殊属性“minimal-ui”无法识别加载不出来的情况么,你们有过在解决完一个问题之后又出来内外一个问题的时候么,你们有给别人找到了BUG,完了自己要去给别人填坑的时候么,你有的,你肯定有的...... 今天这个问题可以说是一个低级的问题,就是webView返回控制的时候无法回退 上模型: webView.loadUrl(A); A是一个可变的域名,可变的域名,可变的域名,重要的事情说三遍 Eg: A="www.baidu.com" 加载之后重定向为: A="www.baidu_1.com" 那么问题来了,就是域名变了么,如果是这么容易我还在这儿废话,麻蛋,百度的一个解决方案,一个现成的模板,然后运营妹纸直接拿来用的,没源码,你懂得,加载的时候不是必现的,偶尔会重定向,偶尔不会,我就xxxx,各种调试, 最后解决方案: WebView.HitTestResult hitTestResult = view.getHitTestResult(); WebView有一个getHitTestResult():返回的是一个HitTestResult,一般会根据打开的链接的类型,返回一个extra的信息,如果打开链接不是一个url,或者打开的链接是javaScript的url,他的类型是UNKNOWN_TYPE,这个url就会通过requestFocusNodeHref(Message)异步重定向。返回的extra为null,或者没有返回extra。根据此方法的返回值,判断是否为null,可以用于解决网页重定向问题。 一句话返回为null就加载链接,否则该干嘛干嘛 上一下我的代码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; }// WebBackForwardList mWebBackForwardList = webview.copyBackForwardList();//获取栈内存在的URL// for (int i = 0, p = mWebBackForwardList.getSize(); i < p; i++) {// Log.e("====", "" + mWebBackForwardList.getItemAtIndex(i).getUrl());// } return super.shouldOverrideUrlLoading(view, url); }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表