【问题标题】:How to prevent Android from closing web-application when backbutton is pressed?按下后退按钮时如何防止Android关闭Web应用程序?
【发布时间】:2012-05-10 02:10:41
【问题描述】:

我正在开发一个 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() 的方法的答案!

【问题讨论】:

  • 该代码应该可以工作。你从哪里得到 PG 的 1.7 版本,因为它还没有发布。你是在 github 上构建的吗?
  • @SimonMacDonald 1.7rc1 于上周四在 download.phonegap.com 上发布。见phonegap.com/2012/04/26/1-7-0rc1-released
  • 遗憾的是,该代码不起作用:/

标签: javascript android cordova back-button


【解决方案1】:

从来没有这样做过,但是,你试过return true 吗?

就像在 Java SDK 中一样,如果您返回 True,系统将假定您已正确捕获该事件,并且不再将其传递给其他事件侦听器。

【讨论】:

  • 是的,我试过了。但遗憾的是它没有奏效。我也只是打印到控制台,而不是返回(),但它仍然退出。奇怪!
【解决方案2】:

我通过将以下代码添加到DefaultActivity.java 文件来解决我自己的问题,以防止默认的 android 行为,并保持问题中所述的 JavaScript 代码:

@Override
public void onBackPressed() {
   return;
}

我希望这对以后遇到同样问题的人有所帮助!

【讨论】:

  • 我正在使用 phonegap 1.7,这似乎是唯一可行的方法。但是,我更喜欢非本机解决方案,以便它适用于 phonegap build 之类的东西。非常感谢您的帮助。
  • 我也尝试了相同的代码......但现在它既不关闭应用程序也不返回......返回按钮被禁用......你能建议我解决这个问题,以便我可以返回上次访问的页面
【解决方案3】:

我采用了这种方法。正如你所展示的,我钩住了后退按钮事件。我看看这是否是第一页,然后询问用户是否要退出程序。这取决于您希望程序根据其状态执行的操作。如您所示,我没有添加覆盖;我似乎不需要它。

if ($.mobile.activePage.attr('id') === 'firstpage') {
    // Prompt to confirm the exit
} else {
  window.history.back();
}

如果他们想退出你可以打电话:

navigator.app.exitApp();

关闭你的程序。

我想您仍然希望允许用户退出您的应用。我不倾向于使用那些 不允许某种形式的退出。

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    相关资源
    最近更新 更多