android WebView 加载重定向页面无法后退解决方案

博客转移到个人站点:
http://www.wangchengmeng.club/2018/02/01/WebView%E5%8A%A0%E8%BD%BD%E9%87%8D%E5%AE%9A%E5%90%91%E9%A1%B5%E9%9D%A2%E6%97%A0%E6%B3%95%E5%90%8E%E9%80%80%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/

欢迎来吐槽

项目中需要用webView加载第三方的web页面,其中有个页面有重定向到另外一个页面,造成了页面无法后退,后退到上个页面,又重定向到之前界面,重定向源页面也被加入到浏览记录中,刚开始想查找api中找个编辑历史记录的方法,把找重定向源页面从历史记录中删除,半天找不到,只有clearHistory方法。
后用浏览器访问该网站,则后退正常,会退到重定向页面。用微信内置WebView ,QQ内置WebView打开该页面后退也正常,发现重定向源页面也被加入到浏览记录中。

纠结这个问题困扰了两三天,各大网站找解决方案也找不到一个完美的方法,大部分都是新建集合另外记录下浏览记录,后退时加载集合里的记录的页面。而不使用Webview.goBack(),在stackOverflow上找也大都是这些。感觉这些方法不完美,没有从根本上解决问题。总感觉还有更好的方法,一个偶然情况下发现了解决方案。

在使用WebView的时候,我们一般都会设置WebViewClient ,重写shouldOverrideUrlLoading方法,让webView加载点击url,并return true。因为不这样设置,点击页面上的链接弹出浏览器
[java] view plain copy 在CODE上查看代码片派生到我的代码片
webView.setWebViewClient(new WebViewClient() {

@Override  
public boolean shouldOverrideUrlLoading(WebView view, String url) {  
     view.loadUrl(url);  
    return true;  
}  

});

而造成重定向源页面被加入历史记录貌似恰恰是这个设置。而让人想不到的解决方案竟是下面这段代码

[java] view plain copy 在CODE上查看代码片派生到我的代码片
webView.setWebViewClient(new WebViewClient() {

    @Override  
    public boolean shouldOverrideUrlLoading(WebView view, String url) {  

        return false;  
    }  

});  

之前我以为这样设置跟没设置WebViewClient效果一样,也会点连接弹浏览器。没想到竟是完全不一样的,这样设置点连接会在当前webView打开,而且重定向页面后退也没问题

ok成功解决了目前的问题,如果有同样的问题希望多多交流。

博客转移到个人站点:
http://www.wangchengmeng.club/2018/02/01/WebView%E5%8A%A0%E8%BD%BD%E9%87%8D%E5%AE%9A%E5%90%91%E9%A1%B5%E9%9D%A2%E6%97%A0%E6%B3%95%E5%90%8E%E9%80%80%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/

欢迎来吐槽

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值