Estoy tratando de invocar onKeyDown() de mi actividad principal con KEYCODE_BACK, para que se comporte como si hubiera presionado el botón "volver". Lo hago con el siguiente código:Fake KeyEvent no funciona * exactamente * como el botón "real". ¿Por qué?
KeyEvent goBackDown = new KeyEvent(0,0,KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_BACK,0,0);
goBackDown.dispatch(activity);
SystemClock.sleep(50); // as if human pressed the key
KeyEvent goBackUp = new KeyEvent(0,0,KeyEvent.ACTION_UP,KeyEvent.KEYCODE_BACK,0,0);
goBackUp.dispatch(activity);
de mi actividad onKeyDown() actualmente sólo llama:
return super.onKeyDown(keyCode, event);
Sin embargo, a diferencia del botón verdadera Volver, cuando el código "falso" se llama, la actividad se niega a volverse invisible.
¿Por qué?
Funcionó. ¡Gracias! Ahora necesito entender por qué. :-) – srf
@srf 'public boolean dispatch (KeyEvent.Callback receiver)' está en desuso. 'El boolean final público (KeyEvent.Callback receiver, KeyEvent.DispatcherState state, Object target)' debería funcionar también en teoría, pero no tengo experiencia en usarlo. – Aleadam
@Aleadam ¿Podríamos crear un objeto KeyEvent usando un valor de carácter unicode? – smartkid