Fake KeyEvent no funciona * exactamente * como el botón "real". ¿Por qué?

Estoy tratando de invocar a mi actividad principal onKeyDown () con KEYCODE_BACK, para que se comporte como si presioné el botón 'volver' yo mismo. Hago eso usando el código siguiente:

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

Mi actividad es onKeyDown () actualmente sólo llama:

 return super.onKeyDown(keyCode, event); 

Sin embargo, a diferencia del botón Back real , cuando se llama al código "falso", la actividad se niega a ser invisible.

¿Por qué?

utilizar

 dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_BACK)); 

http://developer.android.com/reference/android/view/View.html#dispatchKeyEvent%28android.view.KeyEvent%29

El método Aleadam no funciona en mi Android 4.1.2. Así que escribo solución:

 public void dispachBackKey() { dispatchKeyEvent(new KeyEvent (KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK)); dispatchKeyEvent(new KeyEvent (KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK)); } 

Trate de usar esto

 public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { //.... } return true; } 
  • OnDestroy se llama cada vez que se enciende la pantalla
  • La celebración de la conexión Bluetooth bluetooth a través de múltiples actividades
  • usando onResume y onPause
  • Reinicio / Pausa del hilo en onResume / onPause
  • Android: "Nivel de aplicación" Pausa y reanudar
  • Android: ejecuta el código onResume y onPause para todas las actividades de la aplicación?
  • Las funciones de dibujo de lienzo no funcionan después de bloquear y desbloquear la pantalla
  • Android: guarda un estado de instancia cuando se cierra la aplicación
  • Ejecutar código en el estado onPause () o onStop () de la actividad
  • Android: ¿En qué circunstancias podría aparecer un diálogo que cause onPause ()?
  • Cómo pausar y reanudar un TimerTask / Timer
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.