先看代码
    @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. pchar,pwidechar,pansichar作为返回参数时内存访问错误

    function Test:pachr: var   str: string; begin   str := 'Test Char';   result:=pchar(str); end; 上面的Te ...

  2. scrapy框架系列 (5) Spider类

    Spider Spider类定义了如何爬取某个(或某些)网站.包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item). 换句话说,Spider就是您定义爬取的动作及 ...

  3. 在bat中执行sql,并配置windows计划任务,并隐藏命令窗口 (转)

    1.创建一个sql文件,test.sql: INSERT INTO TR_HK_RC_TEMPERATURE2 (HWINSTANCEID, KPIITEMID, BRANCHID, COLLECTT ...

  4. TCP UDP Socket 即时通讯 API 示例 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  5. 由易信界面——谈谈fragment 状态的保存

    看看我要实现的效果: 其实,这种左右界面切换保存布局方式,不只是易信界面这么用罢了.这更是大多数app布局的主流,而在android平台上面,随着谷歌大力推荐fragment的使用,用fragment ...

  6. 一文读懂「Attention is All You Need」| 附代码实现

    https://mp.weixin.qq.com/s?__biz=MzIwMTc4ODE0Mw==&mid=2247486960&idx=1&sn=1b4b9d7ec7a9f4 ...

  7. 强化学习之Q-learning简介

    https://blog.csdn.net/Young_Gy/article/details/73485518 强化学习在alphago中大放异彩,本文将简要介绍强化学习的一种q-learning.先 ...

  8. 云服务器 ECS Linux Ubuntu 主机修改主机名

    云服务器 ECS Linux 主机修改主机名 修改云服务器 ECS Linux 主机名常见的有两种方式,本文对此进行概要说明. 临时生效修改 使用命令行修改 hostname 主机名(可自定义),重新 ...

  9. (转)【Unity Shaders】Vertex Magic —— 访问顶点颜色

    转自:http://blog.csdn.net/candycat1992/article/details/38147767 本系列主要参考<Unity Shaders and Effects C ...

  10. (转)C#中的委托(Delegate)和事件(Event)

    转自:http://blog.chinaunix.net/uid-576762-id-2733751.html   把C#中的委托(Delegate)和事件(Event)放到现在讲是有目的的:给下次写 ...