android返回键webview返回,Android WebView 物理返回键遇到重定向处理
问题出现的场景很常见,比如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 物理返回键遇到重定向处理相关推荐
- Android webView中监听物理返回键一层一层退出
前言 fragment中加载webview如果不处理返回键 那么当你打开多个H5页面的时候 会一次性回退到根级 有时候我们需要一个缓冲 就是一级一级退出 给人一个良好的体验 该怎么做呢? 废话不多说 ...
- uniapp踩坑(五):监听手机物理返回键和滑动返回事件
需求 android端和ios端点击手机物理返回键(左上角的)或页面滑动键退出后,弹出弹框,点击确定后才退出该页面. 截图展示: 实现代码: 在onBackPress()方法中实现. 注意一定要在su ...
- VUE 物理返回键的处理
H5退出时所遇到的问题: 1.按返回键或anroid手机的物理返回键时,都不走destroy方法. 2.按物理返回键,添加popstate监听时, (1)历史记录要准确,否则会执行多次监听方法 (2) ...
- android 监听物理返回键,Android应用开发之react-native 监听Android物理返回键
本文将带你了解Android应用开发之react-native 监听Android物理返回键,希望本文对大家学Android有所帮助. 1. componentWillMount(){ ...
- android物理返回键控制
android物理返回键控制 转载请指明出处 博主版权所有 有些攻城狮做任务需要控制物理返回键 home键 本人观点谷歌屏蔽了home键 网上好多示例代码都没用 在这里示范一下物理返回键的控制吧 关键 ...
- Android 13 返回导航大变更,返回键彻底废弃 + 可预见型返回手势
/ 今日科技快讯 / 据外国媒体报道,马斯克计划裁撤推特约3700个岗位,这占到这家社交媒体公司员工总数的一半,目的是在其440亿美元的收购案之后降低成本.此外,马斯克还打算取消公司现行的远程 ...
- Android 13 返回导航大变更:返回键彻底废弃 + 可预见型返回手势
Android 10 首次引入了全局返回手势,但直到返回触发才能看到目标上层画面.13 针对该特性进行了优化,即返回触发之前可以预览上层画面.同时彻底废弃了返回键相关的 API,这将对现有的 App ...
- 华为 android 菜单键,没有返回和菜单键!华为P10的Home键简单说明
虽然华为顺应了民意,将指纹识别从后面移到了前面.但在我看来,目前华为P10的Home键解决方案还存在两个需要完善的地方. 1.Home键不能按压.可能是受了苹果手机一开始的惯性思维,我们普遍认为目前的 ...
- android dialog返回键不消失,安卓dialog,屏蔽返回键,亲测可用
最近做一个商品选择套餐的功能,需要一个dialog进行翻页,然后按了返回键,dialog全部关闭了,这就很难受了,于是网上搜了一下,也试了很多,都不是想要的效果,突然想到按两下返回键退出app,刚好和 ...
最新文章
- 光遗传学离诺奖又双叒进一步!10天后谜底将揭晓 (盘点光遗传学近年来获奖记录)...
- 1使用帝国cms开发微信小程序之开发前的约定
- IntelliJ IDEA 部署Tomcat及创建一个web工程
- 6个超炫酷的HTML5电子书翻页动画【转】
- Delphi 的各种错 误 信 息(中英文)
- php培训12.22
- linux命令详解——top
- github服务器停止响应,如何解决“git pull,致命:无法访问'https://github.com ... \':服务器空回复”...
- 企业使用RTX腾讯通2013
- python3的文件读写模式
- 计算机算法设计与分析 N后问题
- 【leetcode】二叉树的深度以及树是否平衡的问题
- win7 安装 vmware出错: failed to create the requested registry key key installer error 1021 的解决办法。...
- memcached可视化工具 treeNMS通用的安装方法(windows、mac、linux)
- sif一线通输出协议以及代码实现
- mysql数据库拒绝访问的解决过程_记一次MySQL数据库拒绝访问的解决过程
- 逍遥模拟器上传服务器文件,逍遥模拟器后台操作
- 无死角窥探的焦虑:AI如何反击隐私侵占?
- 数据库性能测试-mysql篇
- Metis异常检测算法率值检测和量值检测源码刨析