Подтвердить что ты не робот

Android "входной ключ оболочки adb keyevent KEYCODE_SEARCH" Не работает

Я хочу запустить событие KEYCODE_SEARCH, используя ADB в моем коде. Когда я выполняю эту команду, я не вижу никаких действий на клавиатуре. Но если я даю "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"/>

Спасибо.

4b9b3361

Ответ 1

Параметр android:imeOptions="actionSearch" не позволяет вашему текстовому тексту получать KEYCODE_SEARCH событие.

Как описано в ссылке на Android:

андроид: imeOptions
Дополнительные функции, которые можно включить в IME, связанных с редактором для улучшения интеграции с вашим приложением. Константы здесь соответствуют тем, которые определены imeOptions.

Если вы хотите получать KEYCODE_SEARCH, отправленные из ADB, вам необходимо переопределить onKeyDown в Activity и вручную вызвать 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, они просто фокусируются на окне поиска