Android "adb shell input keyevent KEYCODE_SEARCH" 不工作

Android "adb shell input keyevent KEYCODE_SEARCH" Not working

我想在我的代码中使用 ADB 触发 KEYCODE_SEARCH 事件。当我执行此命令时,我无法在键盘上看到任何操作。但是如果我给 "adb shell input keyevent KEYCODE_1" 它工作得很好。请给我任何使用 ADB.

触发搜索事件的解决方案

我现在的代码是这样的。

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_SEARCH) {
            performSearch();
            return true;
        }
        return false;
    }
});


<EditText android:imeOptions="actionSearch" 
    android:inputType="text"/>

谢谢。

设置 android:imeOptions="actionSearch" 不允许您的编辑文本接收 KEYCODE_SEARCH 事件。

Android reference所述:

android:imeOptions
Additional features you can enable in an IME associated with an editor to improve the integration with your application. The constants here correspond to those defined by imeOptions.

如果您想接收来自 ADB 的 KEYCODE_SEARCH,您需要覆盖 Activity 中的 onKeyDown 并手动调用 onEditorAction

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode == KeyEvent.KEYCODE_SEARCH){
        editText.onEditorAction(EditorInfo.IME_ACTION_SEARCH);
        return true;
    }else{
        return super.onKeyDown(keyCode, event);
    }
}

请注意,发送 KEYCODE_SEARCH 事件时,其他应用不会触发搜索,它们只是将焦点放在搜索框上