先看代码
    @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.

 

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

android webview goback 跳过页面302自动跳转方法的更多相关文章

  1. Android由一个activity 间隔5秒自动跳转到另外一个activity

    Android由一个activity 间隔5秒自动跳转到另外一个activity 2013年10月10日18:03:42 //一.写一个定时器 5秒后开启        final Intent lo ...

  2. JSP页面实现自动跳转!

    JSP页面实现自动跳转!一.页面自动刷新: 把如下代码加入<head>区域中<meta http-equiv=”refresh” content=”5″>注:content=” ...

  3. 12-tinyMCE文本编辑器+图片上传预览+页面倒计时自动跳转

    文本编辑器插件:1.将tinymce文件夹全部复制到webContent下2.tinymce/js目录下放 jquery等三个js文件3.语言包:tinymce/js/tinymce/langs目录下 ...

  4. 黄聪:PHP如何实现延迟一定时间后自动刷新当前页面、自动跳转header("refresh:1;url={$url}");

    //1秒后自动跳转 header("refresh:1;url={$url}"); exit; //1秒后自动刷新当前页面header("refresh:1;" ...

  5. JSP页面实现自动跳转

    1 <html><head><script language=javascript> function out(obj) {  var i = obj;  if ( ...

  6. python django day 3 页面,自动 跳转,参数传递

    zqxt_views/urls.pypath('', calc_views.index, name='home'), calc/views.pydef index(request): return r ...

  7. PHP跳转页面的几种实现方法详解

    •PHP页面跳转一.header()函数header()函数是PHP中进行页面跳转的一种十分简单的方法.header()函数的主要功能是将HTTP协议标头(header)输出到浏览器.header() ...

  8. 微信小程序:设置页面计时自动跳转

    一.功能描述 当出发某一事件后,希望在规定的时间后自动执行另一事件,比如页面跳转功能. 二.代码实现 使用setTimeout函数,单位为毫秒ms setTimeout(function(){ wx. ...

  9. 实现html页面只自动跳转一次

    function show(){ var  value= sessionStorage.getItem("flg"); if(value==null || value==undef ...

随机推荐

  1. SharePoint SPListItem 权限设置

    namespace Microsoft.SharePoint { using System; using System.Text; using System.Collections.Generic; ...

  2. CListCtrl 之右键菜单

    在使用CListCtrl时要为它添加一个右键菜单,步骤如下: 1. 响应CListCtrl的NM_RCLICK消息. 2. 添加一个菜单资源,在菜单资源中插入要添加到菜单内容.   一般存在两种方法: ...

  3. 如何在Windows版的ScaleIO的节点中添加磁盘

    嗯, 为什么会有这个问题呢? 因为我要安装ScaleIO 1.32, 在使用Installation manager完成初始安装之后, 需要将一些磁盘添加到ScaleIO的storage pool中. ...

  4. 项目总结——MVC+MongoDB实现文件上传

    在做项目的时候我们遇到了视频上传的问题.正式开始项目之前做了一个简单的Demo实现在MVC中视频文件的上 传,考虑到将视频放到MongoDB中上传和读取速度慢的问题,这次我们实现的文件上传是存储的路径 ...

  5. Python机器学习——线性模型

    http://www.dataguru.cn/portal.php?mod=view&aid=3514 摘要 : 最近断断续续地在接触一些python的东西.按照我的习惯,首先从应用层面搞起, ...

  6. Linux echo 显示内容颜色

    Linux echo 显示内容颜色 https://www.cnblogs.com/kimbo/p/6816566.html #字体颜色:30m-37m 黑.红.绿.黄.蓝.紫.青.白 str=&qu ...

  7. (转)Unity原厂讲师大解密

    本文转载自:http://nedwu13.blogspot.tw/2013_11_01_archive.html   Asset Bundle工作流程及人物換裝實例 - 劉剛 Unity內部的資源有兩 ...

  8. (NGUI)UISprite 切换图集

    UISprite是可以使用代码动态切换图集的 using UnityEngine; using System.Collections; public class SpriteAtlasTest : M ...

  9. 转:C++操作mysql方法总结(1)

    原文:http://www.cnblogs.com/joeblackzqq/p/4332945.html C++通过mysql的c api和通过mysql的Connector C++ 1.1.3操作m ...

  10. [Javascript] Check both prop exists and value is valid

    Sometime you need to check one prop exists on the object and value should not be ´null´ or ´undefine ...