Cela a été me rend fou pendant un certain temps maintenant.
Est-il possible de détecter de manière fiable si le bouton a été pressé dans une application android?
À défaut, est-il un bon moyen de dire ce qui a causé une activité à aller dans onPause? j'.e Peut-on détecter si elle a été causée par une nouvelle activité de lancement ou en appuyant sur la touche back/home.
Une suggestion que j'ai vu, c'est de remplacer onPause() et d'appeler isFinishing() mais cela renvoie false lorsque vous appuyez sur le bouton de la maison comme il le ferait si une nouvelle activité de départ est donc cela ne fait pas la distinction entre les deux.
Toute aide appréciée.
** Mise à jour** : Grâce à @android-faim pour ce lien: http://nisha113a5.blogspot.com/
Overiding la méthode suivante:
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
}
Ensuite, l'événement se faire virer de la maison appuie sur un bouton:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//The Code Want to Perform.
}
});
Je ne sais pas si 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 pouvez, en effet, être à l'écoute pour la touche d'accueil. Inquiétant, vous pouvez retourner false et ont la touche accueil ne rien faire.
Mise à jour: Comme prévu, il y a quelques effets secondaires avec ce - qu'il semble que les vidéos intégrées et google maps ne sont pas visibles avec ce mode activé.
Mise à jour: Soi-disant ce hack ne fonctionne plus comme d'Android 4.0 à partir de