Comment faire pour désactiver la Maison et les autres touches du système Android?
J'ai besoin de désactiver la Maison et d'autres système de boutons dans mon application Android.
Exemple: MX Player
(voir sur Google Play) - vous pouvez appuyez sur la touche "verrouillage" de l'icône à l'écran du lecteur et ce qu'il se verrouille tout le matériel et les logiciels du système de boutons.
Cela fonctionne très bien SANS ENRACINEMENT.
Je l'ai testé sur certains appareils avec différentes versions d'Android. J'ai essayé de démonter les Enfants de Verrouillage (plugin), mais n'a aucune idée de comment il fonctionne encore.
J'ai besoin de la même solution, comme les Enfants de Verrouillage (plugin) pour MX Player
:
- désactiver la Maison, et toutes les autres touches du système.
Des suggestions?
- stackoverflow.com/questions/17183905/.... vous ne pouvez pas désactiver le bouton d'accueil.
- avez-vous trouvé un solution pour votre question? Comme je l'ai aussi envie de faire la même fonctionnalité que dans MX Player.
- avez-vous fait cela ?
- Le MX Joueur moyen est plutôt intéressant. Ils sont en fait surpressing la barre de navigation de retour.
- Avez-vous jamais trouver une solution à ce problème? Je suis également besoin de trouver comment désactiver ces boutons. À tout le moins, comment puis-je gérer le multitâche bouton.
- Vous pouvez le vérifier ma réponse, je pense aidera à obtenir ce que vous voulez stackoverflow.com/a/28603790/3300883
Vous devez vous connecter pour publier un commentaire.
D'abord, merci de penser à long et dur si vous voulez vraiment pour désactiver le
Home
bouton ou n'importe quel autre bouton pour que la matière (par exemple, laBack
bouton), ce n'est pas quelque chose qui doit être fait (au moins la plupart du temps, c'est une mauvaise conception). Je ne peux parler que pour moi-même, mais si j'ai téléchargé une application qui ne me permet pas de faire quelque chose, par exemple en cliquant sur un OS bouton, la prochaine chose que j'ai à faire est de désinstaller l'application et de laisser une très mauvaise critique. Je crois aussi que votre application ne sera pas présenté sur l'App Store.Maintenant...
Avis que
MX Player
est de demander la permission de dessiner sur les autres demandes:Puisque vous ne pouvez pas remplacer la
Home
bouton surAndroid
de l'appareil (au moins pas dans les dernières versions de système d'exploitation).MX Player
se dessine sur le dessus de votre lanceur lorsque vous "verrouillage" de l'application et clique sur leHome
bouton.Pour voir un exemple de ce qui est un peu plus simple et facile à comprendre, vous pouvez voir l' Facebook Messenger App.
Comme je l'ai a été demandé de donner quelques infos sur MX Player
Status Bar
etNavigation Bar
"substitution", je suis en train de modifier ma réponse à inclure ces sujets trop.Première chose d'abord, MX Player est en utilisant Immersive Mode Plein Écran (DevBytes Vidéo) sur
KitKat
.Android 4.4 (API Level 19) introduit une nouvelle SYSTEM_UI_FLAG_IMMERSIVE drapeau pour setSystemUiVisibility() qui permet à votre application d'une véritable "plein écran". Ce drapeau, lorsqu'il est combiné avec le SYSTEM_UI_FLAG_HIDE_NAVIGATION et SYSTEM_UI_FLAG_FULLSCREEN drapeaux, se cache la navigation et la barre d'état et permet à votre application de capturer tous les évènements tactiles sur l'écran.
Quand immersive mode plein écran est activé, votre activité continue de recevoir tous les événements tactiles. L'utilisateur peut révéler le système de barres à l'intérieur de balayage le long de la région où le système de barres s'affichent normalement. Cette opération efface les SYSTEM_UI_FLAG_HIDE_NAVIGATION drapeau (et le SYSTEM_UI_FLAG_FULLSCREEN drapeau, si elle est appliquée) de sorte que le système de barres de devenir visible. Cela entraîne également votre Vue.OnSystemUiVisibilityChangeListener, si elle est définie. Cependant, si vous souhaitez que le système de barres de masquer automatiquement à nouveau après quelques instants, vous pouvez utiliser à la place la SYSTEM_UI_FLAG_IMMERSIVE_STICKY drapeau. Notez que le "post-it" version du drapeau de ne pas déclencher des auditeurs, en tant que système de barres temporairement montré dans ce mode sont dans un état transitoire.
Deuxième: Masquer la Barre d'État
Troisième: Le masquage de la Barre de Navigation
Veuillez noter que bien que l'utilisation d'immersion en plein écran est uniquement pour
KitKat
, se cachant leStatus Bar
etNavigation Bar
n'est pas seulement pourKitKat
.Je n'ai pas beaucoup à dire à propos de la 2e et de la 3e, Vous avez l'idée, je crois, c'est une lecture rapide, en tout cas. Juste assurez-vous que vous payez une attention particulière à Vue.OnSystemUiVisibilityChangeListener.
J'ai ajouté un Résumé qui explique ce que je voulais dire, il n'est pas complet et a besoin d'une fixation, mais vous obtenez l'idée. https://gist.github.com/Epsiloni/8303531
Bonne chance la mise en œuvre de cette, et amusez-vous!
TYPE_SYSTEM_ALERT
,SYSTEM_UI_FLAG_HIDE_NAVIGATION
etSYSTEM_UI_FLAG_IMMERSIVE_STICKY
, il n'y a aucun moyen de sortir de l'application. Système de barres de rester caché. Moins la puissance menu est ouvert. Ensuite la barre de navigation s'affiche de nouveau, en la maison du bouton devient fonctionnel. MX Player parvient à garder la barre de navigation cachée dans ce cas. Donc, pour les appareils fonctionnant sous KitKat, nous avons encore besoin de résoudre ce problème.IMMERSIVE_STICKY
ne fonctionne pas. Par conséquent, il est possible d'afficher la barre de navigation (barre d'état reste caché à cause deSYSTEM_ALERT
). On peut le détecter à l'aide de laOnSystemUiVisibilityChangeListener
, et activer les drapeaux. Cependant, par une raison quelconque, cela ne fonctionne qu'après une seconde ou deux, ce qui est plus que suffisamment de temps pour appuyer sur le bouton home. MX Player ne pas utiliserIMMERSIVE STICKY
(barres apparaissent sur kitkat), mais les barres disparaissent à nouveau avant que vous savez.J'ai suivi le shaobin0604 réponse et j'ai enfin réussi à verrouiller le bouton d'ACCUEIL, en ajoutant:
à
AndroidManifest.xml
Tout ce que vous avez à faire est de copierHomeKeyLocker.java
de shaobin lib à votre projet et à le mettre en œuvre comme dans shaobin l'exemple de. BTW: Mon AVD de la version Android est Android 4.0.3.Vous pouvez utiliser Android-HomeKey-Casier pour désactiver la CLÉ de la MAISON et d'autres système de touches(comme des CLÉS et des touches de MENU)
Espère que cela va vous aider dans votre demande. Merci.
Vous pouvez désactiver la maison et récents bouton Android 5.0, à l'aide de l'écran de la fonction de pinning mentionné ici:
Vous pouvez verrouiller l'appareil vers le bas pour être un kiosque. La barre de navigation n'est pas caché, mais la maison et récents boutons peut être retiré ou désactivé selon la façon dont vous activer le mode. J'ai écrit quelques informations après le test de cette fonctionnalité ici.
Juste une supposition, mais je pense qu'avec le SYSTEM_ALERT_WINDOW autorisation (affiché en tant que "Tirer sur les autres applications", voir ici), il pourrait être possible: d'afficher votre application en plein écran, système d'alerte de type fenêtre. De cette façon, il permet de masquer toutes les autres applications, même l'écran d'accueil, donc si vous appuyez sur Home, il ne sera pas vraiment être désactivé, juste sans aucun effet visible.
MX Player dispose de cette autorisation déclaré, et Facebook Messenger a trop pour l'affichage de "chat heads" sur quoi que ce soit - et il pourrait donc être la solution.
Mise à jour (ajout de mes commentaires): Ensuite, utilisez SYSTEM_UI_FLAG_HIDE_NAVIGATION en conjonction avec la capture d'événements tactiles/à l'aide de OnSystemUiVisibilityChangeListener pour remplacer le comportement par défaut (barre de navigation figurant sur touch). Aussi, comme vous l'avez dit à la sortie immersive de mouvement ne fonctionne pas, vous pouvez essayer le réglage de SYSTEM_UI_FLAG_IMMERSIVE_STICKY trop (avec SYSTEM_UI_FLAG_FULLSCREEN et SYSTEM_UI_FLAG_HIDE_NAVIGATION).
getWindow().addFlags(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
-- montre que cela permet de masquer la barre de statut (et de le glisser vers le bas le mouvement de sortie immersive plein écran ne fonctionne pas), mais pas la barre de navigation. Les boutons de cette barre sont encore fonctionnels.Il était possible de désactiver le bouton de la Maison, mais maintenant il ne l'est pas. C'est grâce à des logiciels malveillants qui serait piège de l'utilisateur.
Vous pouvez voir plus détaillées sont exposées ici: Désactiver le bouton Home dans Android 4.0+
Enfin, le bouton de Retour peut être désactivé, comme vous pouvez le voir dans cette autre question: Désactiver le bouton de retour sur les appareils android
D'abord créer une méthode :
Puis vous l'appeler sur
onCreate()
méthode de votre activité.Appel de nouveau sur la
onResume()
méthode.Ensuite, vous pouvez ajouter une autre méthode dans votre activité de ce genre:
Qui le sera.
Rappelez-vous, il va verrouiller l'écran jusqu'à la prochaine fois que l'utilisateur touche l'écran, dans la classe Timer vous pouvez changer le délai et il vous permettra de changer les choses de cette instance.Puis il se verrouille de nouveau l'écran.
Moi aussi, j'étais à la recherche depuis un certain temps, et finalement, il a pu le faire comme je le voulais, c'est à dire de la Barre de Navigation est inaccessible, la barre d'état est inaccessible, même si vous appuyez longuement sur le bouton de puissance, ni de la puissance de menu, ni de boutons de navigation sont affichés. Grâce à @Assaf Gamliel , sa réponse m'a pris vers le droit chemin.
J'ai suivi cette tutoriel avec quelques légères modifications. Tout en précisant le Type, j'ai précisé que
WindowManager.LayoutParams.TYPE_SYSTEM_ERROR
au lieu deWindowManager.LayoutParams.TYPE_PHONE
, sinon notre "superposition" de ne pas masquer le système de barres. Vous pouvez jouer avec les Drapeaux, Hauteur, Largeur, etc alors qu'il va se comporter comme vous le souhaitez.Si vous cible android 5.0 et au-dessus. Vous pouvez utiliser:
je ne sais pas comment le diable bouton home.
tant que mes connaissances que j'ai obtenu suivant le lien.
consulter le lien:- http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HOME
Code de la clé de la constante: la clé de la Maison. Cette clé est gérée par le framework et n'est jamais livré à des applications.
Mais,nous pouvons diable bouton de retour.
l'espérance de code suivant vous aide.
Vous ne pouvez pas désactiver le bouton Home de l'ICS onwords mais peut désactiver les autres boutons comme suit
Post ICS c'est à dire Android 4+, le principal de la HomeButton a été supprimé pour des raisons de sécurité, pour permettre à l'utilisateur de sortie dans le cas où l'application s'avère être un malware.
Plus, il n'est pas vraiment une bonne pratique pour ne pas laisser à l'utilisateur de naviguer à partir de l'application. Mais, puisque vous faites de l'écran de verrouillage de l'application, ce que vous pouvez faire est de déclarer l'activité en tant que Lanceur , de sorte que lorsque le HomeButton est pressé, il sera tout simplement redémarrer votre demande et d'y rester lui-même (les utilisateurs ne remarque rien, mais un léger scintillement de l'écran).
Vous pouvez passer par le lien suivant:
http://dharmendra4android.blogspot.in/2012/05/override-home-button-in-android.html
Franchement, il n'est pas possible de désactiver le bouton de la maison au moins sur une nouvelle api , c'est à partir de 4.0 à partir. Il est également conseillé de ne pas le faire. Toutefois, vous pouvez bloquer le bouton de retour en remplaçant la
afin de remplacer le bouton home, vous pouvez utiliser une minuterie pour l'exemple, et après à chaque fois de vérifier si l'écran principal est de votre écran ou pas, ou que votre paquet est sur le dessus ou pas, (je suis sûr que vous obtiendrez des liens), et l'affichage de votre activité à l'aide de l'indicateur single_top.
De cette façon , même si le bouton est enfoncé, vous serez en mesure d'apporter votre application vers le haut.
Assurez-vous également que l'application dispose d'un moyen de sortie, parce que ce type d'applications peut être vraiment ennuyeux et ne doit jamais être mis au point.
Heureux de codage.
P. S: Il n'est pas possible d'intercepter l'événement à la maison, lorsque le bouton est pressé.
Vous pouvez utiliser sur l'attacher à la fenêtre de méthodes et de verrouillage des méthodes, mais pas pour les api niveaux de 4.0 à partir.
À l'aide de la rotation provoque une exception, j'ai Donc fixé mon activité à l'aide de ceci:
Vous aurez besoin d'utiliser le @Lê Duy Quang suggestion.
L'actualisation d'un vieux sujet.
J'ai été en mesure de réaliser que mon activité ne se plie pas lorsque le bouton d'accueil (physique ou virtuel) est pressé. Voici mon code pour l'activité
onCreate()
méthode:Sur API 26 et abovem vous avez besoin pour obtenir la superposition d'écran de l'autorisation de l'utilisateur. Testé sur Android 7 et 8.
Je travaille sur une application qui a besoin de verrouiller la tablette, pour l'application.
D'abord j'ai mis mon application comme MainLauncher, puis-je verrouiller la barre des tâches à l'aide d'un AndroidView.
Enfin, je bloque la tablette.
Ce n'est pas une fonction que j'indique pour une utilisation sur plusieurs tablette modèles, car chaque modèle d'appareil a une fonction pour bloquer.
Mais dans l'ensemble il fonctionne pour tout le monde.
Vous pouvez utiliser les commandes
comme un exemple pour désactiver les boutons. Mais tout est basé sur le changement du système de fichiers, dans le dossier "/system /usr /keylayout /...".
REMARQUE: ne fonctionne que sur les appareils enracinées.
Une autre façon, je vais essayer bien que toujours en développement, est à l'aide de StreamWrite et StreamReader pour accéder à la RootDirectory et de réécrire tout le fichier pour activer et désactiver les boutons.
Espère que cette aide.
Et des questions restent disponibles.
Pour ceux qui cherchent à supprimer complètement le soft de nav sur une assise (ou ROM custom) appareil android, vous pouvez modifier la
build.prop
fichier texte dans le dossier système.Définir la variable/valeur:
gemu.hw.mainkeys=1
C'est ce que les vendeurs utilisent pour désactiver le soft de nav, quand ils ont des boutons physiques.
Désolé pour la réponse après 2 ou 3 ans. mais vous pouvez masquer l'activité de toutes les touches du système. Il suffit de cocher cette mes réponses Comment désactiver le bouton home virtuel dans toute activité?.