Введите поведение KeyEvent для Android IME

У меня есть встроенный IME, который отправляет KeyEvents при нажатии кнопки ImageButton. При нажатии кнопки ImageButton с надписью Enter выполняется следующий код:

ic.sendKeyEvent(new KeyEvent(0,0,MotionEvent.ACTION_DOWN,KeyEvent.KEYCODE_ENTER,0,0,0,0,KeyEvent.FLAG_EDITOR_ACTION));

Проблема в том, что базовые приложения ведут себя по-разному при нажатии Enter. В сообщениях отправляется подтвержденный текст, но в браузере и в редактируемых полях выделяется последнее набранное слово и появляется возможность вырезать и вставлять всплывающее окно.

Я бы хотел, чтобы клавиша Enter вела себя так, чтобы она работала для "Перейти", "Отправить" и "Далее".

1 ответ

У меня была похожая проблема.

Если вы хотите ввести "ВЫПОЛНЕНО" и "СЛЕДУЮЩИЙ", используйте

long eventTime = SystemClock.uptimeMillis();
KeyEvent eventDOWN  = new KeyEvent(eventTime, eventTime,
 KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER, 0, 0,
 KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
 KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE
 | KeyEvent.FLAG_EDITOR_ACTION);

KeyEvent eventUP = new KeyEvent(SystemClock.uptimeMillis(), eventTime,
 KeyEvent.ACTION_UP, KeyEvent.KEYCODE_ENTER, 0, 0,
 KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
 KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE
 | KeyEvent.FLAG_EDITOR_ACTION);
Другие вопросы по тегам