我最近升级到cordova 5并在4.0.0版本中移除/重新创建了android平台并卸载/重新安装了所有插件.
我还必须将android sdk升级到sdk 22而不是21.
自更新以来,我不再能够捕获cordova文档中描述的menubutton事件.
由于它仍然在边缘文档中引用,我认为它应该仍然有效,我在发行说明中没有看到这一点.
后退按钮仍然有效.
我试图将target-sdk设置为19,它没有解决任何问题.
编辑: 我已经挖掘了cordova源代码并在CordovaWebViewImpl.java中找到了我发现了一个可疑的TODO评论:
public void setButtonPlumbedToJs(int keyCode, boolean override) {
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_DOWN:
case KeyEvent.KEYCODE_VOLUME_UP:
case KeyEvent.KEYCODE_BACK:
// TODO: Why are search and menu buttons handled separately?
if (override) {
boundKeyCodes.add(keyCode);
} else {
boundKeyCodes.remove(keyCode);
}
return;
default:
throw new IllegalArgumentException("Unsupported keycode: " + keyCode);
}
}
Run Code Online (Sandbox Code Playgroud)
好吧,我的答案是"它不应该!!!!"
Cordova列出了要处理的密钥代码,但没有添加菜单按钮,稍后只有在跳过密钥代码后才将密钥代码与KeyEvent.KEYCODE_MENU进行比较,因为它不在列表中.
我试图为菜单按钮添加一个案例,但事实证明只使用后退按钮的代码调用该函数.
所以现在我知道为什么它不起作用但仍然没有如何解决它.
编辑02/2016: 根据最新的Jira,menubutton的支持现在在Cordova Android 5.1.0的java部分修复,但仍然没有从javascript初始化.目前,如Jira用户Keith Wong所示,您需要在添加事件侦听器之前添加javascript调用:
document.addEventListener("deviceready", function() {
...
navigator.app.overrideButton("menubutton", true); // <-- Add this …Run Code Online (Sandbox Code Playgroud) 我一直在我的Windows PC上本地构建Android Phonegap应用程序,并使用Phonegap Build来构建IOS应用程序.
设计人员有一台我们已经用于在iTunes中发布应用程序的Mac.
但即使Phonegap构建是一个很好的工具,也存在许多缺点:构建时间有时可能很长,并非所有插件都可用,插件提交似乎有时很长并且并不总是成功,使用Phonegap构建调试自制插件似乎是不可能的.
出于所有这些原因,我觉得有必要在本地构建IOS项目,也可能开发本机插件.
所以我的想法是使用ssh连接到Designer的Mac并使用它来构建.
其他人以这种方式处理吗?会有用吗?在安装CLI,sdk和其他工具时,我应该注意哪些事项?
例如,我认为在我用于SSH的用户本地安装npm是个好主意.
有任何想法吗?
我有一个使用jQuery Mobile 1.4和Backbone.js的Phonegap 3应用程序.
在这个应用程序中,我使用'swipeleft'和'swiperight'事件来显示表单的不同部分(滑动显示上一个/下一个div).
这很好但我的问题是,如果我用手指在复选框顶部滑动,复选框会在触发滑动之前接收点击事件,因此复选框状态会更改.
我也看到了其他小部件,但复选框似乎足以解释这个问题.
我在桌面计算机上没有chrome的问题,也没有在Kitkat中使用新的chrome webview,但在Gingerbread和Jelly Bean(旧的webkit webview)中遇到了问题.
我在事件处理函数中停止了滑动事件的传播,但由于之前触发了"不需要的"点击,因此没有太大影响......
我可以采取哪些措施来避免在Android网页浏览中滑动时触发点击事件?