Javascript 如何防止Android在按下backbutton时关闭web应用程序?
我正在开发一个HTML5Web应用程序,并使用Cordova(phonegap)1.7进行编译 我想覆盖Android backbutton,以便调用window.history.back(),而不是关闭应用程序(默认Android)。我如何防止Android在按下后退按钮时终止defaultactivity 我在logcat中得到了“按下后退按钮!!!!”,因此该方法在应用程序关闭之前被触发 这就是我到目前为止所做的:Javascript 如何防止Android在按下backbutton时关闭web应用程序?,javascript,android,cordova,back-button,Javascript,Android,Cordova,Back Button,我正在开发一个HTML5Web应用程序,并使用Cordova(phonegap)1.7进行编译 我想覆盖Android backbutton,以便调用window.history.back(),而不是关闭应用程序(默认Android)。我如何防止Android在按下后退按钮时终止defaultactivity 我在logcat中得到了“按下后退按钮!!!!”,因此该方法在应用程序关闭之前被触发 这就是我到目前为止所做的: // Wait for Cordova to load
// 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()的方法的答案 不必这样做,但是,您是否尝试过
返回true
与Java SDK一样,如果您返回
True
,系统将假定您已正确捕获事件,并且不再将其传递给其他事件侦听器。我通过将下面的代码添加到DefaultActivity.Java
文件中来解决我自己的问题,以防止默认的android行为,并保留问题中所述的JavaScript代码:
@Override
public void onBackPressed() {
return;
}
我希望这能帮助将来有同样问题的人 我采取了这种方法。如您所示,我钩住了backbutton事件。我查看这是否是第一页,然后询问用户是否要退出程序。这取决于您希望程序根据其状态执行的操作。我没有像您所示添加覆盖;我似乎不需要它
if ($.mobile.activePage.attr('id') === 'firstpage') {
// Prompt to confirm the exit
} else {
window.history.back();
}
如果他们想退出,您可以拨打:
navigator.app.exitApp();
关闭您的程序
我想你仍然想允许用户退出你的应用程序。我不倾向于使用那些
不要允许某种形式的出口
希望这对您有所帮助。该代码应该可以工作。你是从哪里得到PG的1.7版本的,因为它还没有发布。你是在github上建造吗?@SimonMacDonald 1.7rc1上周四在download.phonegap.com上发布。看到代码没用了吗?/是的,我试过了。但遗憾的是,它没有起作用。我也只是打印到控制台,没有执行back(),但它仍然存在。奇怪的我正在使用phonegap 1.7,这似乎是唯一有效的方法。然而,我更喜欢非本机解决方案,这样它可以在phonegap构建之类的事情上工作。非常感谢你的帮助。我也试过同样的代码。。。但现在它既不关闭应用程序也不返回。。。。“后退”按钮已禁用。。。。你能建议我修改一下,这样我就可以回到上次访问的页面了吗