android webView 解决重定向

最近在开发WebView 过程中碰到了 资源重定向问题;较为头疼;百度啊;谷歌啊 ; 奈何 ///试了N边没有找到合适的;

终于皇天不负有心人  经过一番的艰苦奋战;我的问题是解决了;

1:这个对于重定向的解决 不是简单的在如下:

webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
return false;
}
});


这种方法 感觉 好无聊!

下面说重点:

直接上代码了:

mWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); 

//重点:看下面  

WebView.HitTestResult hitTestResult = view.getHitTestResult();

    //hitTestResult==null解决重定向问题
    if (!TextUtils.isEmpty(url) && hitTestResult == null) {
            view.loadUrl(url);
    return true;
        }

return super.shouldOverrideUrlLoading(view, url);
}
});

最后在回退的时候:添加如下:

            if(mWebView.canGoBack()){
mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
mWebView.goBack();
}

OK-----------------

下面说下:setCacheMode 模式设置的意思:

即websetting中设置的加载模式。websetting.setCacheMode( int  mode)。

LOAD_CACHE_ELSE_NETWORK:只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。

LOAD_CACHE_ONLY:只加载缓存数据,如果没有缓存数据,就出现加载失败;

LOAD_DEFAULT:默认加载方式, 根据cache-control决定是否从网络上取数据;


LOAD_NO_CACHE:不使用缓存,只从网络获取数据;


LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式

具体 可以视情况使用。

3:提供另外一种方案:

通过对加载的url 进行 记录操作(数据);也可以实现对 后退 、前进、等的处理逻辑;

4:再有就是和前端开发人员进行沟通处理了;这个相对来说 开发成本是最高的;当然也是最稳当的。

这里 在要求不高的浏览器开发中 方法2 应该可以了。

 OK---------就到这里先。



  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值