Cordova Android(安卓)返回键拦截(backbutton)和退出(再点击一次跳出)
16lz
2021-01-26
在Android原生webview里重写onBackPressed()就可以。
@Override public void onBackPressed() { super.onBackPressed(); }
但在CordovaWebView里已经被cordovawebview处理掉了,重写onBackPressed()没用。
注意:但onBackPressed()方法在最后一个页面会实现,所以要在最后主页面实现点击出现再点击一次退出,在这处理是可以的。
代码如下:
@Overridepublic 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()方法就彻底不能用了,所以,用了拦截的再点一次退出就在拦截里处理吧
更多相关文章
- android中实现“再按一次退出”功能
- android之onCreateOptionsMenu失效,按菜单键无反应
- Android(安卓)API之onLayout, onMeasure
- Android(安卓)点击两次退后按钮程序退出
- Android(安卓)双击返回键退出应用
- Android(安卓)转场动画使用,所遇到的坑
- Android平台下简单Widget的搭建过程
- Activity(启动模式) Activity(退出)
- Android中优雅的退出程序