[转]Cordova Android 返回键拦截(backbutton)和退出(再点击一次跳出)
本文转自:https://blog.csdn.net/aierJun/article/details/53944061
在Android原生webview里重写onBackPressed()就可以。
@Override
public void onBackPressed() {
super.onBackPressed();
}
但在CordovaWebView里已经被cordovawebview处理掉了,重写onBackPressed()没用。
注意:但onBackPressed()方法在最后一个页面会实现,所以要在最后主页面实现点击出现再点击一次退出,在这处理是可以的。
代码如下:
@Override
public void onBackPressed() {
LogUtils.LogUtils(".............onBackPressed...............");
if (webView.canGoBack()){
webView.goBack();
}else {
exit();
}
}
// 定义一个变量,来标识是否退出
private static boolean isExit = false;
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
isExit = false;
}
};
private void exit() {
if (!isExit) {
isExit = true;
Toast.makeText(getApplicationContext(), R.string.exit_again,
Toast.LENGTH_SHORT).show();
// 利用handler延迟发送更改状态信息
mHandler.sendEmptyMessageDelayed(0, API.HANDLER_MAIN);
} else {
super.onBackPressed();
ClearCacheUtils.cleanDatabases(MainActivity.this); //暂时可以清楚缓存,当涉及到保存用户账户密码时一定要关闭
finish();
}
}
关于在网页中拦截处理也是可以。
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
// device APIs are available
//
function onDeviceReady() {
// Register the event listener
document.addEventListener("backbutton", onBackKeyDown, false);
}
// Handle the volume up button
//
function onBackKeyDown() {
goback();
cordova.save.save();
}
function goback() {
setTimeout(function () {
history.go(-1);
}, 200);
}
注意:使用了网页的拦截后onBackPressed()方法就彻底不能用了,所以,用了拦截的再点一次退出就在拦截里处理吧
---------------------
作者:Ani_aierJun
来源:CSDN
原文:https://blog.csdn.net/aierJun/article/details/53944061
版权声明:本文为博主原创文章,转载请附上博文链接!
[转]Cordova Android 返回键拦截(backbutton)和退出(再点击一次跳出)的更多相关文章
- js监听手机端点击物理返回键或js监听pc端点击浏览器返回键
之前在项目中遇到一个问题,就是在微信网页上面本来是有返回按钮的,但是大多数人都为了方便,会使用安卓手机自带的物理返回键,这个返回键按下后,就会按照你浏览器的栈存储的路径来一层一层返回,就不执行你页面上 ...
- Html5 监听拦截Android返回键方法详解
浏览器窗口有一个history对象,用来保存浏览历史. 如果当前窗口先后访问了三个网址,那么history对象就包括三项,history.length属性等于3. history对象提供了一系列方法, ...
- vue 定义全局函数,监听android返回键事件
vue 定义全局函数,监听android返回键事件 方法一:main.js 注入(1)在main.js中写入函数Vue.prototype.changeData = function (){ aler ...
- quick-cocos2d-x android返回键监听并实现原生退出对话框
这两天最终闲了一下,就顺手又把quick捡起来又学了学,一直都认为quick比cocos2dx那套lua绑定要方便很多,今天试了下android返回键的监听,还是挺好弄的,所以就有了这篇. 首先说明一 ...
- cocos2dx之WebView踩过的坑(android返回键处理问题)
最近游戏接入了一个私服平台,由于没有sdk,所以支付相关的操作需要在网页端进行,也就是说点击充值需要在游戏内部弹出一个网页,并定位到平台充值的地址.查阅相关资料后决定使用cocos2dx自带的WebV ...
- ionic监听android返回键(实现“再按一次退出”功能)
在android平台上的app,在主页面时经常会遇到"再按一次退出app"的功能,避免只按一下返回键就退出app提升体验优化. 1.这个功能需要我们用到ionic提供的regist ...
- android 返回键 操作
cocos2dx项目移植到android平台上对于 android手机返回键,主菜单键等键的相关操作,本篇详细对返回键做个简单的介绍说明, 不足不对之处,请同猿们指出. 首先在主activity下,即 ...
- Cocos3.0 的android返回键功能实现
比如:Game.h Game.cpp 头文件Game.h中定义: void onKeyReleased(EventKeyboard::KeyCode keyCode,Event * pEvent) ...
- Android 返回键的处理
多网友不明确怎样在Android平台上捕获Back键的事件.Back键是手机上的后退键,一般的软件不捕获相关信息可能导致你的程序被切换到后台.而回到桌面的尴尬情况,在Android上有两种方法来获取该 ...
随机推荐
- IDEA添加项目为library
1.如果要作为library的项目没有被IDEA编译就先把项目放在IDEA里面编译一下,因为这样后面导入module会方便一点.下面直接附上步骤 2.假设你已经用IDEA编译好了作为library的项 ...
- java.lang.OutOfMemoryError: PermGen space (jvm内存泄漏解决办法)
2.在myeclipse根目录 打开myeclipse.ini 3.在myeclipse中配置内存
- 64位平台C/C++容易犯的错误
64位平台的介绍 IA-64 is a 64-bit microprocessor architecture developed by Intel and Hewlett Packard compa ...
- nginx关于限制请求数和连接数
nginx轻巧功能强大,能承受几百并发量,ddos攻击几乎没有影响到nginx自身的工作,但是,太多的请求就开始影响后端服务了.所以必须要在nginx做相应的限制,让攻击没有到后端的服务器.这里阐述的 ...
- centos7使用wordpress布署网站(1)
环境说明: 在同一台主机上实现LAMP(Linux + Apache + MariaDB + PHP)腾迅云主机CentOS 7.4.Apache .MariaDB .PHP 1.安装apache.m ...
- 从零开始单排学设计模式「简单工厂设计模式」黑铁 III
阅读本文大概需要 2 分钟. 本篇是设计模式系列的第二篇,虽然之前也写过相应的文章,但是因为种种原因后来断掉了,而且发现之前写的内容也很渣,不够系统.所以现在打算重写,加上距离现在也有一段时间了,也算 ...
- Spring中EmptyResultDataAccessException异常产生的原理及处理方法
Spring中EmptyResultDataAccessException异常产生的原理及处理方法 Spring中使用JdbcTemplate的queryForObject方法,当查不到数据时会抛出如 ...
- 博客Hexo + github pages + 阿里云绑定域名搭建个人博客
申请域名 万网购买的域名,地址:https://wanwang.aliyun.com/domain/com?spm=5176.8142029.388261.137.LoKzy7 控制台进行解析 控制台 ...
- Spark从入门到精通(一)
什么是Spark 大数据计算框架 离线批处理 大数据体系架构图(Spark) Spark包含了大数据领域常见的各种计算框架:比如Spark Core用于离线计算,Spark SQL用于交互式查询,Sp ...
- 一个简单的实例演示vuex模块化和命名空间
因为Vuex Store是全局注册的,不利于较大的项目,引入模块分离业务状态和方法,引入命名空间解决不同模块内(getters,mutaions,actions)名称冲突的问题 ----------- ...