我正在开发HTML5网络应用程序并使用Cordova(phonegap)1.7进行编译。
我想覆盖Android后退按钮,以便我可以调用window.history.back()而不是关闭应用程序(默认Android)。如何防止Android在按下后退按钮时终止默认活动?
我按下“后退按钮!!!!”在logcat中,因此在关闭应用程序之前触发该方法。
这是我到目前为止所做的:
// Wait for Cordova to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova is ready
//
function onDeviceReady() {
document.addEventListener("backbutton", function(e) {
console.log("Back button pressed!!!!");
window.history.back();
}, false);
}
编辑:我愿意接受一个答案,解释直接从DefaultActivity.java android类中模拟window.history.back()的方法,如果可能的话!
答案 0 :(得分:6)
我通过将以下代码添加到DefaultActivity.java
文件来解决我自己的问题,以防止默认的Android行为,并保持问题中所述的JavaScript代码:
@Override
public void onBackPressed() {
return;
}
我希望这可以帮助将来有同样问题的人!
答案 1 :(得分:2)
我采用了这种方法。正如你所示,我迷上了后门按钮事件。我想看看这是否是第一页,然后询问用户是否要退出程序。这取决于您希望程序根据其状态执行的操作。我没有像你所示的那样添加覆盖;我似乎不需要它。
if ($.mobile.activePage.attr('id') === 'firstpage') {
// Prompt to confirm the exit
} else {
window.history.back();
}
如果他们想要退出,您可以致电:
navigator.app.exitApp();
关闭你的程序。
我想您仍然希望允许用户退出您的应用。我不倾向于使用那些应用程序 不允许某种退出。
希望这可以帮助你。
答案 2 :(得分:0)
从来没有这样做,但是,你试过return true
吗?
与Java SDK中一样,如果您返回True
,系统将假定您已正确捕获该事件,并且不再将其传递给其他事件侦听器。