【问题标题】:Cordova catching UP, DOWN, LEFT, RIGHT buttonsCordova 接上、下、左、右按钮
【发布时间】:2016-03-11 10:47:19
【问题描述】:

我正在为 android 4.4.2 设备编写一个 cordova 应用程序。这个设备有一个遥控器,我需要在其中捕捉 UpDownLeftRight -键。

不幸的是,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


    【解决方案1】:

    您可以使用 javascript 来捕获这些键

    window.addEventListener("keydown", moveSomething, false);
     
    function moveSomething(e) {
        switch(e.keyCode) {
            case 37:
                // left key pressed
                break;
            case 38:
                // up key pressed
                break;
            case 39:
                // right key pressed
                break;
            case 40:
                // down key pressed
                break;  
        }   
    }
    

    【讨论】:

    • 看来我的想法太复杂了...谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 2021-05-19
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多