Activer et désactiver les applications système via ADB

49

Existe-t-il une commande adb pour activer / désactiver une application système?

Merci

lao
la source

Réponses:

67

Oui. La commande est pm disable <package name>. Pour cela, vous devez être root:

Shell ouvert et obtenir la racine:

PC> adb shell
shell@hammerhead:/ $ su

Afficher toutes les applications activées, filtrer par "calculatrice":

root@hammerhead:/ # pm list packages -e | grep 'calculator'
package:com.android.calculator2

Désactiver l'application:

root@hammerhead:/ # pm disable com.android.calculator2
Package com.android.calculator2 new state: disabled

Répertoriez 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:

  1. Lors de mes tests, les applications désactivées de cette manière disparaissent complètement de la liste Paramètres> Applications. Ils ne semblent même pas être affichés dans l'onglet "Disabled"
  2. Vous pouvez réactiver les applications avec pm enable <package name>. En fait, cela semble être le seul moyen de les réactiver, selon mon expérience.
eldarerathis
la source
Est-il possible d'éviter de cacher l'application choisie en la désactivant?
développeur Android
1
@androiddeveloper No. Hiding l'application complètement , y compris de l'interface utilisateur, est toute l'idée derrière elle.
Izzy
@ Izzy je vois. Est-il possible de faire le contraire, c'est-à-dire se cacher, sans désactiver?
développeur Android
Théoriquement oui je suppose; mais je ne sais pas comment faire ça. Certaines "applications" dans les magasins n'apparaissent nulle part après leur installation (par exemple, elles ne fournissent que des paramètres supplémentaires dans d'autres applications, ou offrent des "services invisibles" tels que "les gestionnaires de comptes" pour des services spécifiques), ce qui prouve que cela devrait fonctionner en quelque sorte; mais j'ai bien peur que cela soit fait dans l'application Manifestou dans une application similaire (je ne suis pas un développeur Android, donc je ne peux pas le dire).
Izzy
il est possible d'activer l'application via sa page Playstore.
Info-écran
7

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 ne figuraient pas dans l'écran des paramètres de l'utilisateur. Toutes les commandes d'un adb shell. Un accès racine est requis pour apporter des modifications.

Tout d'abord, obtenez l'id de l'utilisateur:

$ pm list users
Users:
  UserInfo{0:Alice:13} running
  UserInfo{11:Bob:18} running

ensuite

$ pm disable --user 11 com.cyanogenmod.filemanager
Package com.cyanogenmod.filemanager new state: disabled-user

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 la même chose avec hideau lieu de disable. Je ne suis pas sûr de ce qui est le mieux, mais voyez cette réponse . L'inverse de hideest unhide(un redémarrage peut être nécessaire pour effectuer unhide).

Vous pouvez lister les paquets avec pm list pacakges --user 11. Donnez -eà la liste des paquets activés ou -dsi vous voulez voir ceux qui sont désactivés. Il semblerait qu'il n'y ait pas de filtre pour les paquets cachés.

FWIW, j'ai essayé ce qui précède sur Lollipop avec CM 12.1 sur un feu Amazon (KFFOWI).

starfry
la source
3

Cela devrait fonctionner que l'application soit une application système ou une application tierce (utilisateur installé).


Voir ma réponse à Déterminer le nom du package de votre application pour obtenir le nom du package de l'application concernée et utiliser le shell pour exécuter ces commandes ( nécessite un accès root ):

coquillage
su
pm disable PACKAGE # désactive l'application et la cache dans Paramètres -> Applications 
pm masquer PACKAGE # alternative; pour Android Lollipop et supérieur
cmd package suspend PACKAGE # alternative; le paquet reste visible dans l'application Launcher and Settings 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, remplacer désactiver avec activer , cacher avec unhide et suspendre avec Réactiver dans ladite commande et l' exécuter avec les privilèges root.

Si vous avez Android KitKat ou une version et que vous n’avez pas accès à la racine , utilisez dans PC pour exécuter cette commande:

adb shell pm block PACKAGE # pour Android KitKat
adb shell pm masquer PACKAGE # pour Android Lollipop uniquement
shell adb pm disable-user PACKAGE # alternative à `pm hide`; pour Android Lollipop et au-dessus; cela fonctionne comme si vous désactiviez 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 déjà utilisé `pm hide`
adb shell pm enable PACKAGE # pour Android Lollipop et supérieur

Les changements auraient lieu immédiatement.

Firelord
la source