Android – Est-il possible de désactiver le clic du bouton d’accueil

J’ai une application, quand il lance je dois désactiver tous les boutons sur l’appareil Android, j’ai réussi à désactiver l’appel final et d’autres. Je dois désactiver le clic sur le bouton d’accueil. Il ne doit produire aucune action sur le clic.

Toutes les suggestions très appréciées

Je suis presque certain que Toddler Lock utilise simplement un BroadcastReciever et écoute Intent.ACTION_MAIN et la catégorie Intent.CATEGORY_HOME . sélectionnez le verrou enfant en bas âge.

Donc, il ne bloque pas vraiment le bouton Home, il se positionne simplement comme récepteur de diffusion par défaut pour:

 Intent i = new Intent(Intent.ACTION_MAIN); i.addCategory(Intent.CATEGORY_HOME); 

Lorsque vous lancez Toddler Lock, il définit probablement un indicateur interne, et si vous appuyez sur le bouton d’accueil, la fenêtre est simplement mise en avant. Si l’indicateur n’est pas défini, il lance probablement le lanceur explicitement.

J’espère que cela à du sens. C’est juste une théorie, mais je suis presque sûr à 100% que c’est comme ça.

Ajoutez le code suivant à votre activité:

 @override public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); } 

Modifier:

Cela fonctionne dans toutes les anciennes versions d’Android. Mais ne fonctionnera pas dans ICS et Jelly Bean et vous donnera un crash dans l’application

Que signifie ce code Java 4 lignes dans une application Android?

Ajoutez ceci dans votre fichier manifest.xml pour votre activité principale:

    

Le bouton HOME relancera toujours votre activité. Travaille à Froyo.

Vous pouvez trouver ici mon exemple d’application Android qui persiste sur la page d’accueil. Les boutons Accueil, Retour, Appel, Alimentation sont désactivés. L’utilisateur peut terminer l’application uniquement en tapant un mot de passe.

J’ai trouvé un moyen d’aborder la touche HOME. Pour votre application, définissez le manifeste comme

     

Maintenant, votre application est une autre application lanceur.

Utilisez l’adb et désactivez l’application de lancement à l’aide du gestionnaire de packages

 pm disable com.android.launcher2 

Maintenant, la touche Accueil enfoncée restra dans le même écran.

Un ajout supplémentaire au post de Jeffreys, voici quelque chose qui a fonctionné pour moi (et permet toujours le thème translucide)

 @Override public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); super.onAttachedToWindow(); } 

Étant donné que le keyguard est activé, vous pouvez également désactiver le protège-clavier lorsque l’application est utilisée:

 KeyguardManager keyguardManager = (KeyguardManager)getSystemService(KEYGUARD_SERVICE); KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE); lock.disableKeyguard(); 

Cela fonctionne très bien pour créer votre propre application de locking.