Android simula presionar tecla

¿Cómo puedo simular mediante progtwigción una pulsación de tecla en un Droid? Me gustaría imitar una pulsación manual de tecla (que aparece en el droide que alguien está presionando una tecla, pero se está haciendo mediante progtwigción).

Hay soluciones que implican IWindowManager , pero eso ya no es una opción en el nuevo SDK.

Puede usar instrumentación, es decir, el siguiente código invocado desde onCreate de su actividad hará que el menú se abra y cierre varias veces:

  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(); 

... pero no estoy seguro si esto es lo que buscas

Si tiene una vista que desea consumir el evento, puede usar la clase BaseInputConnection y su método sendKeyEvent .

Para usarlo necesitarás especificar una vista de destino (por ej., Un texto de edición) que recibirá KeyEvent. Por ejemplo:

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

El resultado es que el usuario presiona la tecla # (mientras se enfoca el texto de edición).

También puede usar input text , es decir:

Desde la computadora a través de adb :

 adb shell input text 'example\\@email.com' 

De shell :

 input text 'example\\@email.com'