[转]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
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/freeliver54/p/10143725.html