问题出现的场景很常见,比如webview 先加载一个oauth url,成功后重定向到url_b。那个按物理返回键的时候webview会goBack 到过度的oauth url,马上又被重定向到url_b。也就是返回键好像失效了。(当然快速按2次可以解决,可是用户不希望这样)

解决的思路是load(oauth_url)重定向到url_b 的时候先标记isGoBack=true.

在onPageStarted 中的url 是 oauth_url,但是

shouldOverrideUrlLoading中是url_b.

根据两次的不一样可以进行如下处理和标识位复位

1. isGoBack = false;

2. if (mWebView.canGoBack()) {

mWebView.goBack();

} else {

killWebProcess();

}

首先 我们Custom了 WebViewClient

mWebView.setWebViewClient(new WebViewClient() {

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

if (!TextUtils.isEmpty(startUrl) && !startUrl.equals(url) && isGoBack&&System.currentTimeMillis() - resumeTime<600) {

isGoBack = false;

if (mWebView.canGoBack()) {

mWebView.goBack();

} else {

killWebProcess();

}

} else {

view.loadUrl(url, getHeaders(url));

isGoBack = false;

return true;

}

return false;

}

@Override

public void onPageStarted(WebView view, String url, Bitmap favicon) {

super.onPageStarted(view, url, favicon);

startUrl = url;

}

其次处理返回键

boolean isGoBack = false;

private long resumeTime = 0;

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {

isGoBack = true;

resumeTime = System.currentTimeMillis();

mWebView.goBack();

return true;

}

return super.onKeyDown(keyCode, event);

}

上面的代码中有System.currentTimeMillis() - resumeTime<600 这个是为了干嘛呢?

防止上一次按返回键真的只是一次goBack() !!! 去掉你就会知道问题,遇到了就加上

完整代码在 MVP-Dagger2-Rxjava2中搜索代码类 BaseWebViewActivity

android返回键webview返回,Android WebView 物理返回键遇到重定向处理相关推荐

  1. Android webView中监听物理返回键一层一层退出

    前言 fragment中加载webview如果不处理返回键 那么当你打开多个H5页面的时候 会一次性回退到根级 有时候我们需要一个缓冲 就是一级一级退出 给人一个良好的体验 该怎么做呢? 废话不多说 ...

  2. uniapp踩坑(五):监听手机物理返回键和滑动返回事件

    需求 android端和ios端点击手机物理返回键(左上角的)或页面滑动键退出后,弹出弹框,点击确定后才退出该页面. 截图展示: 实现代码: 在onBackPress()方法中实现. 注意一定要在su ...

  3. VUE 物理返回键的处理

    H5退出时所遇到的问题: 1.按返回键或anroid手机的物理返回键时,都不走destroy方法. 2.按物理返回键,添加popstate监听时, (1)历史记录要准确,否则会执行多次监听方法 (2) ...

  4. android 监听物理返回键,Android应用开发之react-native 监听Android物理返回键

    本文将带你了解Android应用开发之react-native 监听Android物理返回键,希望本文对大家学Android有所帮助. 1. componentWillMount(){         ...

  5. android物理返回键控制

    android物理返回键控制 转载请指明出处 博主版权所有 有些攻城狮做任务需要控制物理返回键 home键 本人观点谷歌屏蔽了home键 网上好多示例代码都没用 在这里示范一下物理返回键的控制吧 关键 ...

  6. Android 13 返回导航大变更,返回键彻底废弃 + 可预见型返回手势

    /   今日科技快讯   / 据外国媒体报道,马斯克计划裁撤推特约3700个岗位,这占到这家社交媒体公司员工总数的一半,目的是在其440亿美元的收购案之后降低成本.此外,马斯克还打算取消公司现行的远程 ...

  7. Android 13 返回导航大变更:返回键彻底废弃 + 可预见型返回手势

    Android 10 首次引入了全局返回手势,但直到返回触发才能看到目标上层画面.13 针对该特性进行了优化,即返回触发之前可以预览上层画面.同时彻底废弃了返回键相关的 API,这将对现有的 App ...

  8. 华为 android 菜单键,没有返回和菜单键!华为P10的Home键简单说明

    虽然华为顺应了民意,将指纹识别从后面移到了前面.但在我看来,目前华为P10的Home键解决方案还存在两个需要完善的地方. 1.Home键不能按压.可能是受了苹果手机一开始的惯性思维,我们普遍认为目前的 ...

  9. android dialog返回键不消失,安卓dialog,屏蔽返回键,亲测可用

    最近做一个商品选择套餐的功能,需要一个dialog进行翻页,然后按了返回键,dialog全部关闭了,这就很难受了,于是网上搜了一下,也试了很多,都不是想要的效果,突然想到按两下返回键退出app,刚好和 ...

最新文章

  1. 光遗传学离诺奖又双叒进一步!10天后谜底将揭晓 (盘点光遗传学近年来获奖记录)...
  2. 1使用帝国cms开发微信小程序之开发前的约定
  3. IntelliJ IDEA 部署Tomcat及创建一个web工程
  4. 6个超炫酷的HTML5电子书翻页动画【转】
  5. Delphi 的各种错 误 信 息(中英文)
  6. php培训12.22
  7. linux命令详解——top
  8. github服务器停止响应,如何解决“git pull,致命:无法访问'https://github.com ... \':服务器空回复”...
  9. 企业使用RTX腾讯通2013
  10. python3的文件读写模式
  11. 计算机算法设计与分析 N后问题
  12. 【leetcode】二叉树的深度以及树是否平衡的问题
  13. win7 安装 vmware出错: failed to create the requested registry key key installer error 1021 的解决办法。...
  14. memcached可视化工具 treeNMS通用的安装方法(windows、mac、linux)
  15. sif一线通输出协议以及代码实现
  16. mysql数据库拒绝访问的解决过程_记一次MySQL数据库拒绝访问的解决过程
  17. 逍遥模拟器上传服务器文件,逍遥模拟器后台操作
  18. 无死角窥探的焦虑:AI如何反击隐私侵占?
  19. 数据库性能测试-mysql篇
  20. Metis异常检测算法率值检测和量值检测源码刨析

热门文章

  1. 冷焰,从孤独黑客到互联网安全创业者:我常深夜躲在书房,背后冒冷汗 | 宅客故事...
  2. 利用Transformer替代MSA从蛋白序列中学习Contact Map
  3. 重磅!阿里云时空数据库正式免费公测
  4. 支付宝小程序中使用F2图表
  5. 【数据库】分库分表分区
  6. Ubuntu16.04下配置ORB-SLAM2与运行单目实例
  7. 2020大学生网络安全知识竞赛总决赛模拟题易错题集(3)
  8. Android--垃圾桶控件
  9. 涂鸦社区公区道闸联动全屋智能,家家拥有贴心智慧管家!
  10. finereport 使用超级链接并传递参数问题分析