Dispositif : OnePlus One (OPO) ; fonctionne avec CM12, est enraciné, et a Xposed Framework installé.
Je dois activer Navigation à l'écran (il désactive les touches matérielles (HW) et affiche les touches programmables à l'écran ; comme par exemple este ) dans OPO. Je suis capable de le faire via Paramètres mais mon objectif nécessite une solution en ligne de commande via le shell.
(Notez que ce n'est pas une question de développement/programmation, simplement une question sur Android).
-
Objectif : Pour désactiver la touche Back(HW) lorsque l'activité principale d'une app (aléatoire) est au premier plan, mais sans redémarrage.
-
J'ai trouvé que la navigation à l'écran était un bon choix qui ne nécessite pas de redémarrage. Je vais utiliser une application d'automatisation pour déclencher l'action de désactivation.
-
Il existe des moyens manuels de désactiver les touches HW (en éditant
.kl
et d'activer les touches programmables (en modifiant les fichiersbuild.prop
), ou en utilisant des outils comme les modules Xposed pour désactiver ou échanger les touches HW. Mais ils nécessitent tous un redémarrage (soft/hard) au moins une fois. que je ne peux pas me permettre. -
J'ai expérimenté et constaté que lorsque la navigation à l'écran est activée, la valeur de l'option
dev_force_show_navbar
les changements apportés à1
de0
. De même.button_brightness
les changements apportés à0
de255
. Les deux noms sont sousSettings.db
(Tableau :secure
) -
De plus, il n'y a pas d'activité spéciale assignée pour Réglages → Boutons (il active la navigation à l'écran). J'ai utilisé
dumpsys activity | grep mFocusedActivity
pour voir l'activité liée à Boutons . Le résultat a été :com.android.settings/.SubSettings
-
dumpsys activity activities
odumpsys activity recents
n'a également rien de plus à dire ici. -
J'ai enregistré mes actions en utilisant
logcat
lors de l'activation de la navigation à l'écran et ici est le fichier journal.
Donc, comment activer la navigation à l'écran via la ligne de commande, qu'elle nécessite ou non un accès super utilisateur ?
Editar : Y a-t-il un autre la manière dont je peux atteindre l'objectif avec précision ?
La seule chose qui me vient à l'esprit est d'utiliser <code>input <keyevent></code> mais c'est contre-productif pour moi. L'autre moyen est de déclencher un module Xposed comme <strong>Ajouts Xposed </strong>mais je ne parviens pas à l'utiliser avec le shell.
0 votes
Je sais qu'il est possible de l'activer dans le build.prop, mais il suffit d'ajouter ceci à la fin :
qemu.hw.mainkeys=0
0 votes
@SuperThomasLab Merci de le mentionner explicitement, mais comme je l'ai déjà mentionné dans la question, il faut le redémarrer pour qu'il prenne effet que je ne peux pas me permettre.
0 votes
Désolé, je ne l'avais pas remarqué, vous pouvez peut-être le décompiler.
settings
et de voir comment ils procédaient à l'époque.0 votes
@SuperThomasLab Ici est la source. Pouvez-vous nous aider à l'utiliser dans un shell ?
0 votes
J'ai jeté un coup d'œil au code, il y a un moyen de désactiver les boutons matériels et d'activer les boutons de navigation, mais c'est codé et ne peut pas être utilisé en ligne de commande. Où allez-vous exécuter cette commande shell ? Vous pouvez peut-être lancer une activité d'une application que je peux/nous pouvons créer et qui le fait automatiquement en arrière-plan. (En code java) @Firelord
0 votes
@SuperThomasLab J'ai déjà réussi à lancer ou relancer une activité d'une application en utilisant Tasker et des commandes shell, mais je suis bloqué à l'objectif final (voir mon édition).
0 votes
Alors ne pouvez-vous pas créer une simple application qui active/désactive la barre de navigation ?
0 votes
@SuperThomasLab Si seulement j'étais un développeur, j'aurais pu résoudre le problème :)
0 votes
Je pourrais essayer... Même si je ne suis qu'un débutant
0 votes
Laissez-nous poursuivre cette discussion dans le chat .