如何在按下后退按钮时阻止Android关闭Web应用程序?

时间:2012-04-30 11:05:25

标签: javascript android cordova back-button

我正在开发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()的方法,如果可能的话!

3 个答案:

答案 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,系统将假定您已正确捕获该事件,并且不再将其传递给其他事件侦听器。