安卓webview重定向的解决
来源:互联网 发布:疲劳驾驶数据 编辑:程序博客网 时间:2024/05/20 16:41
在Android开发过程中,使用过WebView的童鞋可能难免会遇到URL重定向问题。
解决方案
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
});
就是直接返回false,就可以解决重定向问题。
shouldOverrideUrlLoading :这个方法的返回值
return true 表示当前url即使是重定向url也不会再执行(除了在return true之前使用webview.loadUrl(url)除外,因为这个会重新加载)
return false 表示由系统执行url,直到不再执行此方法,即加载完重定向的ur(即具体的url,不再有重定向)
WebView加载重定向页面会遇到问题。
1.如果需要获取webview访问的url地址,那么加载重定向页面时会显示两次
2.如果WebView在加载页面的过程中,有加载重定向页面,那么在Android2.3版本中会遇到无法回退的问题,但是4.0以上系统不会。例如,用户在点击回退时,webview会执行goBack()方法,2.3系统不能正常回退,而4.0能正常回退,可以解释为4.0系统的webview对重定向做了处理,他会把重定向的两个页面看做是一个页面,所以webview成功回退了,但是2.3系统的webview会先回退到重定向页面(非真正的目的页面),回退之后会执行loadUrl(url)方法,而这是因为url是个重定向url,所以会跳转到真正的目标页面,so,经过两次加载,页面还是回到goBack()之前的页面!
问题2的解决方案:
从重定向的概念可知,当访问重定向url时服务器会返回301状态码,那么可以根据此特殊的状态码来把重定向页面排除在历史访问记录队列里。
具体思路为:
(1)自定义一个历史url访问队列——MyWebBackForwardList
(2)在webview每次loadUrl(url)之前先用HttpUrlConnection对象的getResponseCode()方法来获取状态码,如果==301,不加入队列中,否者加入。
(3)重写webview的canGoBack()和goBack()方法
不再使用webview的WebBackForwardList对象来取历史url,而是使用自定义的MyWebBackForwardList来取出回退的url
- 安卓webview重定向的解决
- android webView 解决重定向
- Android 解决WebView重定向
- 解决Android Webview 重定向无法 goback 的方法
- WebView重定向的解决方案
- 解决安卓4.4webview的兼容性问题
- WebView重定向问题的解决方案
- WebView重定向问题的解决方案
- 【webView重定向】遇到的坑
- Android WebView重定向问题的解决方案
- android webview 如何去广告和如何解决重定向返回的问题。
- android webview 如何去广告和如何解决重定向返回的问题。
- Android WebView 因重定向无法正常goBack()的一种解决小方案
- 安卓获取url重定向后的url
- android webview 解决回退重定向的问题
- 重定向失败的解决 & 输出重定向备用 &实时重定向
- WebView重定向以及Alert
- WebView处理重定向下载
- 字符集和字符编码
- mysql之触发器trigger 详解
- UVA11426 GCD
- HTML5新增的标签和属性归纳
- python中的unicode_escape
- 安卓webview重定向的解决
- Find The Multiple
- ant编译时提示一大堆软件包不存在的问题
- Docker之容器退出-yellowcong
- 经常用到的GIT指令
- cockroachdb尝试
- java初级ATM模拟
- eclipse importing maven projects 卡顿
- 欢迎使用CSDN-markdown编辑器