82 votes

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

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

Merci

93voto

David Negron Points 971

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:

  1. Dans mes tests, les applications désactivées de cette manière disparaissent complètement de la liste des applications dans Paramètres > Applications. Elles ne semblent même pas être affichées dans l'onglet "Désactivées"
  2. Vous pouvez réactiver les applications avec pm enable . En fait, c'est apparemment la seule façon de les réactiver, d'après mon expérience.

1 votes

Est-il possible d'éviter la dissimulation de l'application choisie lors de sa désactivation ?

1 votes

@androiddeveloper Non. Cacher l'application complètement, y compris de l'interface utilisateur, est l'idée principale derrière cela.

1 votes

@Izzy Je vois. Est-il possible de faire l'inverse, c'est-à-dire juste cacher, sans désactiver?

24voto

Firelord Points 23064

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.

0 votes

En dehors de tout le reste sur cette page, seulement cmd package suspend a fonctionné comme prévu. Tout le reste provoquerait des exceptions

0 votes

@iSWORD quel appareil Android et quelle version Android utilisez-vous?

1 votes

Je suis en train d'utiliser un Lenovo P2a42 fonctionnant sous AOSP 11

11voto

starfry Points 395

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).

1 votes

Un accès root n'est pas obligatoire, j'ai désactivé une application système LineageOS en exécutant pm disable-user --user 0 org.lineageos.audiofx (dans adb shell).

0 votes

^ Android 13 / LineageOS 20; peut "masquer" au lieu de désactiver.

4voto

S.Goswami Points 121

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.

1 votes

Tu devrais utiliser cmd install-existing com.android.vending sur les appareils Android récents. Sur Android 8, pm install-existing ne fonctionnera pas. Sur les anciennes versions d'Android (4.2) sans la commande cmd, tu peux essayer pm install -r pour forcer la réinstallation.

androidalle.com

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.

Powered by:

X