如何全局使用数字键盘的回车键?

时间:2018-09-25 13:41:27

标签: java android

我是android开发的新手,我试图让numpad enter做点事情(全局范围内,所以不在edittext中)。每当我尝试使用onKeyDown或onKeyUp拦截它时,它都将不起作用。除输入小键盘外,所有键均正常工作。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

    switch (keyCode) {
        case KeyEvent.KEYCODE_NUMPAD_ENTER:
            //Do Something

            return true;
        case KeyEvent.KEYCODE_ENTER:
            //Do Something

            return true;
        case KeyEvent.KEYCODE_DPAD_CENTER:
            //Do Something

            return true;
    }
    return super.onKeyDown(keyCode, event);
}

如何全局拦截数字键盘的Enter键?

编辑:

我发现出于某些原因该键不在KeyCharacterMap中。有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

打开/关闭numlock可能有所不同。

此外,我相信onKeyDown事件无法捕获回车键。 您可能还需要检查视图的XML,以查看是否要限制键输入。

尝试一下:

@Override
public boolean dispatchKeyEvent(KeyEvent event) {

    try
    {
        if(event.getAction()== KeyEvent.ACTION_UP)
        {
            System.out.println(event.getAction() + " " + event.getKeyCode() + " - " + (char) event.getUnicodeChar());
        }
    }
    catch (Exception ex)
    {
        ex.printStackTrace();
    }

    return true;
}

从那里您应该看到enterKey的keyCode和keyAction