我已按照Cordova docs中的示例代码覆盖设备后退按钮(使用ES6),但它无法正常工作:
const onBackButtonPress = () => {
console.log('pressed');
};
document.addEventListener('backbutton', onBackButtonPress, false);
当我在Android设备上运行应用程序时,我的覆盖代码会被调用,但应用程序也会退出,就好像还调用了默认的后退按钮操作一样。
如何在按下后退按钮时阻止应用退出?
我已尝试将e.preventDefault()
添加到addEventListener
我在deviceready
事件被解雇后这样做。
我正在使用Cordova 7.0.1,我的平台是cordova-android 6.2.3
答案 0 :(得分:1)
虽然这里的所有答案都是正确的,但在某些设备上它们仍然无法正常工作。我在Huawei P smart 2019上遇到了相同的问题,而在Huawei MediaPad T3上一切正常。在我的情况下,窗口焦点是问题,它在启动过程中的某个时候丢失了。
因此,正如其他人所建议的,请在设备就绪后添加以下内容: document.addEventListener('backbutton',()=> {},false);
此外,在Java插件启动后的某个时候(在启动屏幕之后): this.cordova.getActivity()。getWindow()。getDecorView()。requestFocus();
这也是Cordova在CordovaActivity.onResume中所做的。如果您的后退按钮在挂起并恢复应用后正常运行,但在此之前未正常运行,则应该可以解决您的问题。
答案 1 :(得分:0)
我在我的应用中使用此代码:
document.addEventListener("backbutton", function(e) {
e.preventDefault();
return;
}, false);
注意,在device is ready
时运行此代码答案 2 :(得分:0)
我使用如下:
if(cordova.platformId === "android") {
document.addEventListener("backbutton", function (event) {
event.preventDefault();
var confirmStatus = confirm("Do you want to exit?");
if (confirmStatus === true) {
navigator.app.exitApp();
}
}, false);
}