当软键盘弹出时,当我单击设备物理键盘上的删除按钮时,将不会调用dispatchKeyEvent方法

时间:2019-03-28 11:53:39

标签: android android-softkeyboard keyevent

我有一个带物理键盘的android设备,品牌为UBX I6200S(Android 5.1.1)。 我的代码如下:

@Override
public boolean dispatchKeyEvent(KeyEvent event) {

    Log.e("MainActivity", "dispatchKeyEvent");

    final int keyCode = event.getKeyCode();
    final int action = event.getAction();

    if (action == KeyEvent.ACTION_UP || action == KeyEvent.ACTION_MULTIPLE) {
        Log.e("MainActivity", "ACTION_UP || ACTION_MULTIPLE");
        return true;
    }

    if (action == KeyEvent.ACTION_DOWN) {
        if (keyCode == KeyEvent.KEYCODE_DEL) {
            Log.e("MainActivity", "click KEYCODE_DEL");
            return true;
        }
        if (keyCode == KeyEvent.KEYCODE_ENTER) {
            Log.e("MainActivity", "click KEYCODE_ENTER");
            return true;
        }
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Log.e("MainActivity", "click KEYCODE_BACK");
            return true;
        }
        if (keyCode == KeyEvent.KEYCODE_MENU) {
            Log.e("MainActivity", "click KEYCODE_MENU");
            return true;
        }
        Log.e("MainActivity", "click Other Keys");
        return super.dispatchKeyEvent(event);
    }
    return super.dispatchKeyEvent(event);
}

当弹出软键盘时,当我单击设备物理键盘上的删除按钮时,日志 Log.e("MainActivity", "dispatchKeyEvent");无法显示,但是当我单击设备物理键盘上的Enter键时,日志Log.e("MainActivity", "dispatchKeyEvent");就会显示。

但是当隐藏软键盘时, 不管我点击什么键  日志Log.e("MainActivity", "dispatchKeyEvent");可以显示

有人可以帮助我解决吗?因为我想在单击设备物理键盘上的删除按钮时执行某些操作。

0 个答案:

没有答案