Android имитировать нажатие клавиши
Как я могу программно имитировать нажатие клавиши на дроиде? Я хотел бы имитировать ручное нажатие клавиши (появляется на дроиде, что кто-то нажимает клавишу, но это делается программно).
есть решения, связанные с IWindowManager, но это больше не вариант в новом SDK.
3 ответов
вы можете использовать инструментарий, т. е. следующий код, вызванный из 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();
...но я не уверен, что это то, что вы ищете
Если у вас есть представление, которое хочет использовать событие, вы можете использовать BaseInputConnection класса и его sendKeyEvent метод.
чтобы использовать его, вам нужно будет указать целевое представление (e.G EditText), который получит KeyEvent. Например:
EditText editText;
BaseInputConnection inputConnection = new BaseInputConnection(editText, true);
inputConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_POUND));
результат этого похож на то, что пользователь фактически нажал клавишу # (при фокусировке текста редактирования).
вы также можете использовать input text, Я.е:
С компьютера через adb:
adb shell input text 'example\@email.com'  
С shell:
input text 'example\@email.com'  
