Questo mi sta facendo impazzire da un po 'di tempo.
Esiste un modo per rilevare in modo affidabile se il pulsante Home è stato premuto in un'applicazione Android?
In caso contrario, c'è un modo efficace per dire cosa ha causato un'attività in pausa? cioè Possiamo rilevare se è stato causato dal lancio di una nuova attività o premendo back / home.
Un suggerimento che ho visto è di sovrascrivere onPause () e chiamare isFinishing (), ma questo restituirà false quando si preme il pulsante home proprio come farebbe se una nuova attività sta iniziando, quindi questo non riesce a distinguere tra i due.
Qualsiasi aiuto molto apprezzato.
** Aggiornamento **: Grazie a @ android-hungry per questo link: https://nishandroid.blogspot.com/
Ignorando il seguente metodo:
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
Quindi il seguente evento verrà attivato per la pressione del pulsante home:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//The Code Want to Perform.
}
});
Non sono sicuro che ci siano effetti collaterali con questa linea:
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
Quindi sembrerebbe che contrariamente alla credenza popolare, puoi effettivamente ascoltare la chiave di casa. È preoccupante che tu possa restituire false e che la chiave home non faccia nulla.
Aggiornamento : come previsto, ci sono alcuni effetti collaterali con questo: sembra che i video incorporati e le mappe di Google non siano visibili con questa modalità abilitata.
Aggiornamento : presumibilmente questo hack non funziona più da Android 4.0 in poi
Activity.onUserLeaveHint()
.