• android webview goback 跳过页面302自动跳转方法


    转自http://blog.csdn.net/dyllove98/article/details/8827529
    http://hi.baidu.com/519177819/item/3a340f16436cd1d5bf9042bf
    先看代码
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            //判断是否可以返回操作
            if (webView.canGoBack() && event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
                //获取历史列表
                WebBackForwardList mWebBackForwardList = webView
                        .copyBackForwardList();
                //判断当前历史列表是否最顶端,其实canGoBack已经判断过
                if (mWebBackForwardList.getCurrentIndex() > 0) {
                    //获取历史列表
                    String historyUrl = mWebBackForwardList.getItemAtIndex(
                            mWebBackForwardList.getCurrentIndex() - 1).getUrl();
                    //按照自己规则检查是否为可跳转地址
                    //注意:这里可以根据自己逻辑循环判断,拿到可以跳转的那一个然后webView.goBackOrForward(steps)
                    if (!historyUrl.contains("s.click.taobao.com")) {
                        //执行跳转逻辑
                        webView.goBack();
                        //webView.goBackOrForward(-1)
                        return true;
                    }
                }
            }
            return super.onKeyDown(keyCode, event);
        }

    使用webview.copyBackForwardList()来进行判断是否是在当前页打开的链接

    本文只适合希望在webview中强制打开新链接在新标签。 

    使用webview时,可以在WebviewClient类的shouldOverrideUrlLoading方法中获得每次打开的页面,如果希望知道这个页面是否加入了target="_blank"在一个新标签也打开。并没有直接的方法可以知道。那么我们可以获得这个方法的copyBackForwardList值。如果加入了target="_blank"标签,那么这个copyBackForwardList的值一定是0,因为是新标签,没有back可以放回。如果是在当前页面打开,那么这个值肯定是1.因为在当前页是需要具有返回功能的。另外如果在当前页面打开的时候这个地址是多次跳转的地址。那么只有第一的值是1,剩下的地址的这些值也是0,因为第一次获得地址是具有返回功能的,其他在这个地址上的跳转没有有返回功能的。当然如果不进行跳转,只在当前页面打开连接时,这个值会根据你在页面的点击的链接进行的跳转增加,但是如果每次你检测到是当前页面打开,你就强制在新页面打开,那么每次遇到在页面打开时,这个值都只能是1.

     

    ---恢复内容结束---

  • 相关阅读:
    Swap Nodes in Pairs
    Search for a Range——稍微升级版的二分查找
    Set Matrix Zeroes——常数空间内完成
    Ubuntu系统---C++之Eclipse 开始工程项目
    Ubuntu系统---C++之Eclipse编译器 CDT插件安装
    Ubuntu系统---开机总会显示错误报告处理
    Ubuntu系统---C++之Eclipse IDE 编译器安装
    Ubuntu系统---终端下用g++进行c++项目
    Ubuntu系统---进行C++项目开发的工具
    YOLO---Darknet下的 GPU vs CPU 速度
  • 原文地址:https://www.cnblogs.com/yejiurui/p/3328725.html
Copyright © 2020-2023  润新知