Введите поведение 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);