Cordova for android如何在App中处理退出按钮事件
2014-07-23 12:20
651 查看
项目需要在HTML5 Android App中加入对返回键的处理,发现直接在Activity中加返回键处理代码不起作用,分析cordova源码发现返回键已经被WebView处理掉了,所以只能在js中处理返回键了!
下面的代码可以响应后退按钮,并提示用户再次点击才退出。
如果3秒后没有点击则重新注册事件。
注意:window.plugins.ToastPlugin.show_short()是显示toast消息的插件!
代码:
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (exit > 1) { finish(); } else { Toast.makeText(this, R.string.toast_exit, Toast.LENGTH_SHORT) .show(); exit++; } return true; } else { return super.onKeyDown(keyCode, event); } }在继承了CordovaActivity的Activity中,上面的代码是不会起作用的,因为WebView已经处理了返回键事件,并退出Activity了
/* * Android 2.x needs to be able to check where the cursor is. Android 4.x does not * * (non-Javadoc) * @see android.app.Activity#onKeyDown(int, android.view.KeyEvent) */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { //Determine if the focus is on the current view or not if (appView != null && appView.getFocusedChild() != null && (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_MENU)) { return appView.onKeyDown(keyCode, event); } else return super.onKeyDown(keyCode, event); }CordovaActivity源码中的返回键处理代码
下面的代码可以响应后退按钮,并提示用户再次点击才退出。
如果3秒后没有点击则重新注册事件。
注意:window.plugins.ToastPlugin.show_short()是显示toast消息的插件!
代码:
// 等待加载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 for android怎样在App中处理退出button事件
- Android之AppWidget的按钮事件开启Activity
- Android Appwidget 之按钮事件
- Android中点击Button按钮或响应业务处理后如何隐藏输入法键盘
- android 中多个线程处理完成触发一个事件如何设计
- Android 如何让 app 自行处理 power key M
- 如何使用Visual Studio Tools for Office创建事件处理程序
- Android学习--为ListView添加按钮的相应事件,来处理不同的选择。
- Android 如何让 app 自行处理 power key M
- Android游戏开发9:触屏事件处理中的常见问题及如何禁止横竖屏切换
- (转)Android之appWidget按钮事件
- Android 组件学习【启发】 如何处理好多个组件的多个事件 收藏
- App Inventor for Android Button单击事件 推荐
- 如何在javascript中捕获浏览器关闭按钮或退出页面的事件
- Android中设计具有背景图的按钮—ImageButton的焦点及事件处理
- Android PupopWindow 内的按钮事件处理
- Android中设计具有背景图的按钮—ImageButton的焦点及事件处理
- Android中,分别处理按钮的按下及弹起事件
- Android 如何让 app 自行处理 home key
- Android按钮事件处理及对话框