Cela me rend dingue depuis un moment maintenant.
Existe-t-il un moyen de détecter de manière fiable si le bouton d'accueil a été enfoncé dans une application Android?
À défaut, y a-t-il un moyen fiable de dire ce qui a provoqué la mise en pause d'une activité? ie Peut-on détecter si elle a été causée par le lancement d'une nouvelle activité ou en appuyant sur back / home.
Une suggestion que j'ai vue est de remplacer onPause () et d'appeler isFinishing (), mais cela retournera false lorsque vous appuyez sur le bouton d'accueil, tout comme si une nouvelle activité démarre, cela ne permet pas de faire la distinction entre les deux.
Toute aide très appréciée.
** Mise à jour **: Merci à @ android-hungry pour ce lien: https://nishandroid.blogspot.com/
Remplacer la méthode suivante:
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
Ensuite, l'événement suivant sera déclenché pour les pressions sur le bouton d'accueil:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//The Code Want to Perform.
}
});
Je ne sais pas s'il y a des effets secondaires avec cette ligne:
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
Il semblerait donc que contrairement à la croyance populaire, vous puissiez en fait écouter la clé de la maison. Fait inquiétant, vous pouvez renvoyer false et laisser la clé d'accueil ne rien faire.
Mise à jour : Comme prévu, cela a des effets secondaires - il semble que les vidéos intégrées et les cartes Google ne soient pas visibles avec ce mode activé.
Mise à jour : supposément, ce hack ne fonctionne plus à partir d'Android 4.0
Activity.onUserLeaveHint()
.