Android имитирует нажатие клавиши - программирование
Подтвердить что ты не робот

Android имитирует нажатие клавиши

Как я могу программно имитировать нажатие клавиши на Droid? Я хотел бы подражать ручному нажатию клавиши (появляется на дроиде, что кто-то нажимает клавишу, но это делается программно).

Есть решения, связанные с IWindowManager, но это больше не вариант в новом SDK.

4b9b3361

Ответ 1

Вы можете использовать инструменты, т.е. следующий код, вызванный onCreate вашей активности, заставит меню открываться и закрываться несколько раз:

    new Thread(new Runnable() {         
        @Override
        public void run() {
            try {
            Instrumentation inst = new Instrumentation();
            for ( int i = 0; i < 10; ++i ) {
                inst.sendKeyDownUpSync(KeyEvent.KEYCODE_MENU);
                Thread.sleep(2000);
                inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
                Thread.sleep(2000);
            }
            }
            catch(InterruptedException e){
            }
        }   
    }).start();

... но я не уверен, что это то, что вы после

Ответ 2

Если у вас есть представление, которое хочет использовать событие, вы можете использовать BaseInputConnection класс и sendKeyEvent.

Чтобы использовать его, вам нужно будет указать целевой вид (например, EditText), который получит KeyEvent. Например:

EditText editText;
BaseInputConnection inputConnection = new BaseInputConnection(editText, true);
inputConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_POUND));

Результатом этого является то, что пользователь на самом деле нажал клавишу # (при фокусировке текста редактирования).