Y a-t-il une commande adb pour activer/désactiver une application système ?
Merci
Y a-t-il une commande adb pour activer/désactiver une application système ?
Merci
Oui. La commande est pm disable
. Vous devez être root pour le faire:
Ouvrez shell et obtenez les droits root:
PC> adb shell
shell@hammerhead:/ $ su
Listez toutes les applications activées, filtrez par "calculatrice":
root@hammerhead:/ # pm list packages -e | grep 'calculator'
package:com.android.calculator2
Désactivez l'application:
root@hammerhead:/ # pm disable com.android.calculator2
Le nouvel état de l'application com.android.calculator2 est: désactivé
Listez toutes les applications désactivées:
root@hammerhead:/ # pm list packages -d
package:com.android.calculator2
package:com.google.android.apps.inputmethod.hindi
package:jp.co.omronsoft.iwnnime.ml
package:com.google.android.inputmethod.pinyin
package:com.google.android.inputmethod.korean
package:com.google.earth
root@hammerhead:/ #
Quelques autres choses à noter:
pm enable
. En fait, c'est apparemment la seule façon de les réactiver, d'après mon expérience.
Est-il possible d'éviter la dissimulation de l'application choisie lors de sa désactivation ?
@androiddeveloper Non. Cacher l'application complètement, y compris de l'interface utilisateur, est l'idée principale derrière cela.
@Izzy Je vois. Est-il possible de faire l'inverse, c'est-à-dire juste cacher, sans désactiver?
Cela devrait fonctionner que l'application soit une application système ou une application tierce (installée par l'utilisateur).
Consultez ma réponse sur Déterminez le nom du package de votre application pour obtenir le nom du package de l'application concernée et utilisez adb shell pour exécuter ces commandes (nécessite un accès root) :
adb shell
su
pm disable PACKAGE # désactive l'application et la cache dans Paramètres -> Applications
pm hide PACKAGE # alternative ; pour Android Lollipop et versions supérieures
cmd package suspend PACKAGE # alternative ; le package reste visible dans le lanceur et l'application Paramètres mais ne peut pas être utilisé ; une fonctionnalité de l'Administration de l'appareil
PACKAGE
fait référence au nom du package de l'application
Pour rétablir l'application, remplacez désactiver par activer, cacher par réapparaître et suspendre par réactiver dans ladite commande et exécutez-la avec les privilèges root.
Si vous avez Android KitKat ou une version supérieure et que vous n'avez pas accès root, utilisez adb sur PC pour exécuter cette commande :
adb shell pm block PACKAGE # pour Android KitKat
adb shell pm hide PACKAGE # pour Android Lollipop uniquement
adb shell pm disable-user PACKAGE # alternative à \`pm hide\` ; pour Android Lollipop et versions supérieures ; cela fonctionne comme désactiver une application via l'application Paramètres
Pour rétablir l'application :
adb shell pm unblock PACKAGE # pour Android KitKat
adb shell pm unhide PACKAGE # pour Android Lollipop et uniquement si vous avez utilisé \`pm hide\` plus tôt
adb shell pm enable PACKAGE # pour Android Lollipop et versions supérieures
Les changements prendront effet immédiatement.
En dehors de tout le reste sur cette page, seulement cmd package suspend
a fonctionné comme prévu. Tout le reste provoquerait des exceptions
Suite à la réponse de @eldarerathis, vous pouvez désactiver une application pour un utilisateur spécifique. J'ai utilisé cette méthode pour supprimer certaines applications d'un utilisateur restreint qui n'étaient pas répertoriées sur l'écran des paramètres utilisateur. Toutes les commandes à partir d'un adb shell
. Un accès root est nécessaire pour effectuer les modifications.
Tout d'abord, obtenez l'identifiant de l'utilisateur :
$ pm list users
Users :
UserInfo{0:Alice:13} en cours d'exécution
UserInfo{11:Bob:18} en cours d'exécution
Ensuite
$ pm disable --user 11 com.cyanogenmod.filemanager
Package com.cyanogenmod.filemanager nouvel état : désactivé-utilisateur
Pour réactiver
# pm enable --user 11 com.cyanogenmod.filemanager
Dans cet exemple, Alice peut utiliser le gestionnaire de fichiers mais Bob ne le peut pas.
Vous pouvez faire une chose similaire avec cacher
au lieu de désactiver
. Je ne suis pas sûr de ce qui est le mieux, mais voir cette réponse. Le contraire de cacher
est montrer
(un redémarrage peut être nécessaire pour effectuer montrer
).
Vous pouvez lister les packages avec pm list packages --user 11
. Donnez -e
pour lister les packages activés ou -d
si vous voulez voir ceux désactivés. Il semble qu'il n'y ait aucun filtre pour les packages cachés.
Pour information : J'ai essayé ce qui précède sur Lollipop avec CM 12.1 sur un Amazon Fire (KFFOWI).
J'ai voulu désactiver le Play Store sur mon téléphone Vivo car ma nièce installe toujours plusieurs gigaoctets de jeux. Pour certains d'entre vous, cela pourrait fonctionner, aucun root n'est requis.
Pour désactiver le Play Store :
$ adb shell pm uninstall --user 0 -k com.android.vending
Success
Cela désinstalle l'application. Mais il y a aussi un moyen de restaurer l'application :
$ adb shell pm install-existing com.android.vending
Package com.android.vending installed for user: 0
Évidemment, le Play Store est un exemple. Cela devrait fonctionner pour la plupart des applications système. Depuis le PC, vous pouvez exécuter directement ceci, ou si vous êtes dans un shell ADB, exécutez la commande après adb shell
.
Vous pouvez utiliser adb shell pm list packages
, le passer à grep pour rechercher facilement le package.
Notez que cela désinstalle l'application, le drapeau -k devrait conserver les données. Mais dans mon cas, toutes les données ont été purgées/supprimées. Il peut donc y avoir une perte de données lors du processus de désinstallation des applications système.
AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.