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'