禁用/覆盖Cordova 3.5中的Android Back按钮

时间:2014-08-01 21:04:19

标签: android cordova

根据3.5版的Cordova文档:

http://cordova.apache.org/docs/en/3.5.0/cordova_events_events.md.html#Events

我尝试使用以下代码禁用后退按钮。触发onDeviceReady事件,但后退按钮事件不会触发。

// Wait for device API libraries to load
//
function onLoad() {
    document.addEventListener("deviceready", onDeviceReady, false);
}

// device APIs are available
//
function onDeviceReady() {
    // Register the event listener
    document.addEventListener("backbutton", onBackKeyDown, false);
}

// Handle the back button
//
function onBackKeyDown() {
}

在我的控制台中收到此消息的其他有趣消息中包含:

exec() call to unknown plugin App.

我已经看到了这个问题的几个答案,包括以下编辑config.xml文件并添加:

<feature name="App">
     <param name="android-package" value="org.apache.cordova.App" />
</feature>

这些都不起作用。

2 个答案:

答案 0 :(得分:3)

要禁用本机后退按钮功能,您需要在传递给处理程序的事件对象上调用preventDefault()

document.addEventListener("backbutton", onBackKeyDown, false);

function onBackKeyDown(e) {
    e.preventDefault();
}

如果您收到其他错误,我建议删除并重新添加Android平台(确保首先安装最新版本的Cordova):

$ npm update cordova -g
$ cordova platform remove android
$ cordova platform add android

如果您可以分享更多项目,那将是最好的,因此我可以看到出现问题的地方。您可以做的其他检查:

  • 确保为所有其他功能安装了所有插件cordova plugin ls将为您提供已安装的任何插件。

  • 确保您参考<script type="text/javascript" src="cordova.js"></script>

  • 检查设备就绪事件是否被触发。

  • 在运行应用的Safari开发工具中调试时,检查没有JavaScript错误。

答案 1 :(得分:1)

此错误提示:     exec调用未知插件App

我检查了包含cordova构建中包含的App插件的App.java文件,我找到了以下行:

protected static final String TAG = "CordovaApp";

这与3.5附带的cordova.js文件中的相应exec()调用不匹配。所以,我把它改成了

protected static final String TAG = "App";

现在,根据文档,事件覆盖了cordova的所有工作。

干杯。