问题出现的场景很常见,比如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. III (十七) haproxy(2)
  2. SQLServer约束介绍
  3. Rest Framework
  4. 八月计算机考试试题,职称计算机考试题库和答案
  5. excel下拉速度太慢_全靠这些Excel、Word一键录入技巧,我才能用10分钟完成3小时工作...
  6. 博客主之自我介绍(不长,随便瞅瞅)
  7. SCAU高级语言程序设计--实验5 循环结构(一)(2)
  8. html制作钟表盘,CSS3简易表盘时钟
  9. “红蓝眼人”问题中旅行者说的话的作用
  10. 网格环境配置 三 安装SGE
  11. Mars3D(含Cesium)数据及服务篇:城市建筑物转为3DTiles白膜格式
  12. 全球变暖,为何寒潮这么多?【北极变暖:冷空气有了出口】
  13. android service是什么,Android service是什么 Android service详解
  14. Gallery Server Pro ----用于分享相片,视频,音频及其他媒体的ASP.NET相册[Carol]
  15. 【SP】SubstancePainter安装相关问题
  16. lorem ipsum_在我们的雷达上:独家电子邮件,PHP数字垃圾和Ipsum
  17. Citadel——Dusk网络的Zero-Knowledge KYC解决方案
  18. 仿微信、QQ聊天页面软键盘遮挡聊天对话的解决办法
  19. 微信浏览器中唤醒APP到指定页
  20. CSU——2161: 漫漫上学路 最短路

热门文章

  1. 美国计算机科学教师协会,美国计算机科学奥林匹克ACSL
  2. 2004年度最欠“扁”短信集锦
  3. 今天学习VI编辑器的使用方法
  4. 夸奖php工程师,关于程序猿的经典笑话
  5. 仿网易‘垃圾箱’动画效果
  6. 五运六气计算java代码_破译干支历法和五运六气
  7. 深度学习/机器学习入门基础数学知识整理(七):数学上sup、inf含义,和max、min的区别
  8. ansible配置登入凭证
  9. 梅科尔工作室-寒假培训-鸿蒙第四课-官方API、路由跳转、数据请求、弹窗、事件。
  10. Cortex-M芯片低功耗开发