【发布时间】:2016-03-11 10:47:19
【问题描述】:
我正在为 android 4.4.2 设备编写一个 cordova 应用程序。这个设备有一个遥控器,我需要在其中捕捉 Up、Down、Left 和 Right -键。
不幸的是,cordova 仅支持捕获用于 vol-up、vol-down、菜单、搜索和后退键的事件 (See documentation)
所以我尝试编写自己的插件,但不幸的是我被卡住了,不知道如何继续。
Java 部分(简化):
public OwnPlugin() {}
public void initialize(CordovaInterface cordova, CordovaWebView webView) {
super.initialize(cordova, webView);
}
public boolean execute(final String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("overrideUpButton")) {
this.overrideUpButton(args.getBoolean(0));
}
return true;
}
public void overrideUpButton(boolean override) {
webView.setButtonPlumbedToJs(KeyEvent.KEYCODE_DPAD_UP, override);
}
}
JS-Part(简化):
cordova.define("com. ... ", function(require, exports, module) {
var exec = require('cordova/exec');
function OwnPlugin() {
}
OwnPlugin.prototype.overrideUpButton = function(override, onsucess, onfail){
exec(onsucess, onfail, "OwnPlugin", "overrideUpButton" ,[ override ]);
};
var ownPlugin = new OwnPlugin();
module.exports = ownPlugin;
});
当我试图用OwnPlugin.overrideUpButton(true); 覆盖按钮时,这给了我一个例外:
E/PluginManager: Uncaught exception from plugin
E/PluginManager: java.lang.IllegalArgumentException: Unsupported keycode: 19
E/PluginManager: at org.apache.cordova.CordovaWebViewImpl.setButtonPlumbedToJs(CordovaWebViewImpl.java:366)
好的...这种方法行不通,因为CordovaWebViewImpl.java 不支持我需要的按钮代码
那我现在能做什么?如何捕捉这些键码,从而防止默认操作,并在 JavaScript 中使用它们?
- KEYPAD_DPAD_UP
- KEYPAD_DPAD_DOWN
- KEYPAD_DPAD_LEFT
- KEYPAD_DPAD_RIGHT
【问题讨论】:
标签: javascript java android jquery cordova