Cordova(ionic)项目实现双击返回键退出应用


Posted in Javascript onSeptember 17, 2019

Android原生项目实现双击返回键退出应用,是十分简单的,添加如下代码即可实现:

//记录按键时间
  private long exitTime;
  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode == KeyEvent.KEYCODE_BACK){
      exit();
    }
    return super.onKeyDown(keyCode, event);
  }
  public void exit(){
    if ((System.currentTimeMillis()-exitTime)>2000){
      // 点击间隔大于两秒,做出提示
      Toast.makeText(getApplicationContext(), "再按一次退出应用", Toast.LENGTH_SHORT).show();
      exitTime = System.currentTimeMillis();
    }else{
      finish();
      System.exit(0);
    }
  }

然而,在Cordova项目中,在继承CordovaActivity的MainActivity中添加上面的代码并不起作用,原因是返回键已经被Cordava的WebView处理掉了。

解决办法:在app.js的config中添加如下代码:

// 等待加载PhoneGap
document.addEventListener("deviceready", onDeviceReady, false); 
// PhoneGap加载完毕
function onDeviceReady() {
//按钮事件
document.addEventListener("backbutton", eventBackButton, false); //返回键
document.addEventListener("menubutton", eventMenuButton, false); //菜单键
document.addEventListener("searchbutton", eventSearchButton, false); //搜索键
}
 
//返回键
function eventBackButton(){
//confirm("再点击一次退出!");
window.plugins.ToastPlugin.show_short('再点击一次退出!');
document.removeEventListener("backbutton", eventBackButton, false); //注销返回键
  //3秒后重新注册
  var intervalID = window.setInterval(
    function() {
      window.clearInterval(intervalID);
      document.addEventListener("backbutton", eventBackButton, false); //返回键
    },
    3000
  );
}
//菜单键
function eventMenuButton(){
  window.plugins.ToastPlugin.show_short('点击了 菜单 按钮!');
}
//搜索键
function eventSearchButton(){
  window.plugins.ToastPlugin.show_short('点击了 搜索 按钮!');
}

上面的脚本用到了Cordova的Toast插件,插件地址:

cordova plugin add

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
Mar 10 Javascript
JavaScript 上万关键字瞬间匹配实现代码
Jul 07 Javascript
JavaScript—window对象使用示例
Dec 09 Javascript
[原创]推荐10款最热门jQuery UI框架
Aug 19 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
Jan 21 Javascript
vue.js中指令Directives详解
Mar 20 Javascript
微信小程序自定义多选事件的实现代码
May 17 Javascript
JavaScript实现仿Clock ISO时钟
Jun 29 Javascript
vue模式history下在iis中配置流程
Apr 17 Javascript
jquery树形插件zTree高级使用详解
Aug 16 jQuery
微信小程序实现分享商品海报功能
Sep 30 Javascript
vue router 传参获取不到的解决方式
Nov 13 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
Sep 17 #Javascript
ionic+html5+API实现双击返回键退出应用
Sep 17 #Javascript
Vue的属性、方法、生命周期实例代码详解
Sep 17 #Javascript
小程序的上传文件接口的注意要点解析
Sep 17 #Javascript
微信小程序实现蒙版弹出窗功能
Sep 17 #Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
Sep 17 #Javascript
ionic2.0双击返回键退出应用
Sep 17 #Javascript
You might like
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
2010/10/22 PHP
详解php魔术方法(Magic methods)的使用方法
2016/02/14 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
php探针使用原理和技巧讲解
2019/09/17 PHP
jquery禁止回车触发表单提交
2014/12/12 Javascript
jQuery中ajax的load()方法用法实例
2014/12/26 Javascript
微信小程序 swiper组件轮播图详解及实例
2016/11/16 Javascript
Bootstrap的modal拖动效果
2016/12/25 Javascript
原生JS实现层叠轮播图
2017/05/17 Javascript
vue文件树组件使用详解
2018/03/29 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
layui 设置table 行的高度方法
2018/08/17 Javascript
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
2018/10/19 Javascript
vue-dplayer 视频播放器实例代码
2019/11/08 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
JS可断点续传文件上传实现代码解析
2020/07/30 Javascript
H5 js点击按钮复制文本到粘贴板
2020/11/19 Javascript
javascript实现电商放大镜效果
2020/11/23 Javascript
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
Python连接mssql数据库编码问题解决方法
2015/01/01 Python
Python Pandas找到缺失值的位置方法
2018/04/12 Python
使用 Python 实现文件递归遍历的三种方式
2018/07/18 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
实现Python与STM32通信方式
2019/12/18 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
优秀企业获奖感言
2014/02/01 职场文书
设备动力科岗位职责范本
2014/02/23 职场文书
大学生会计职业生涯规划范文
2014/02/28 职场文书
挂职学习心得体会
2014/09/09 职场文书
2014年班组工作总结
2014/11/20 职场文书
2015年环境监察工作总结
2015/07/23 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
一篇文章弄懂Python中的内建函数
2021/08/07 Python
Mysql binlog日志文件过大的解决
2021/10/05 MySQL