131 votes

Commande shell adb pour faire apparaître la boîte de dialogue de désinstallation des paquets Android

J'ai adb en cours d'exécution et le dispositif est connecté à mon système en mode débogage,

Je veux désinstaller l'application en utilisant le lancement intentionnel en utilisant adb shell am start <INTENT>

Je ne veux pas désinstaller en utilisant adb uninstall com.company.apppackage et je ne veux pas le faire même en utilisant adb shell pm uninstall com.company.apppackage

Comment puis-je envoyer une intention avec android.intent.action.DELETE pour un paquet spécifique permettant à l'utilisateur de voir l'invite et de désinstaller le programme ?

223voto

neverever415 Points 657

Utilisez cette commande dans cmd :

adb shell pm uninstall -k com.packagename

Par exemple :

adb shell pm uninstall -k com.fedmich.pagexray

El -k indique au gestionnaire de paquets de conserver les répertoires de cache et de données, même si l'application est supprimée. Si vous voulez une désinstallation propre, ne spécifiez pas l'option -k .

8 votes

Je préfère cette réponse. En effet, avec celle-ci, vous n'obtiendrez pas la boîte de dialogue de confirmation d'annulation de la suppression.

2 votes

@joctee, moi aussi, mais la question disait spécifiquement qu'ils ne voulaient pas désinstaller en utilisant une intention.

0 votes

@Lohoris, J'ai réussi à le faire fonctionner assurez-vous d'enlever le "+" sur la réponse de Neverever.

179voto

pcans Points 3554

Vous pouvez le faire depuis adb en utilisant cette commande :

adb shell am start -a android.intent.action.DELETE -d package:<your app package>

2 votes

Pouvez-vous s'il vous plaît dire ce que -d package:<votre paquet d'application> signifie ? toute documentation est là ?

11 votes

-d signifie données. -a signifie action. Vous lancez un Intent avec l'action "Delete" et les données "package:your app package". Cela va lancer l'activité en charge de la désinstallation des paquets et essayer de désinstaller le paquet fourni dans les données. La documentation peut être trouvée en utilisant la commande "adb shell am".

0 votes

Non, si votre application contient un DevicePolicyManager activé, vous devrez d'abord le désactiver manuellement.

12voto

Firelord Points 378

Avec ADB, vous pouvez utiliser l'une des trois commandes suivantes :

adb shell am start -a android.intent.action.UNINSTALL_PACKAGE -d "package:PACKAGE"
adb shell am start -n com.android.packageinstaller/.UninstallerActivity -d "package:PACKAGE"
adb shell am start -a android.intent.action.DELETE -d "package:PACKAGE"

Remplacez PACKAGE par le nom du paquet de l'application utilisateur installée. L'application ne doit pas être un administrateur de périphérique pour que la commande fonctionne correctement. Toutes ces commandes nécessitent la confirmation de l'utilisateur pour la suppression de l'application.

Les détails de la dite commande peuvent être connus en vérifiant Je suis L'utilisation de l adb shell am .

J'ai obtenu l'information sur ces commandes en utilisant Elixir 2 (utilisez toute application équivalente). Je l'ai utilisé pour montrer les activités de l'application Package Installer (l'interface graphique que vous voyez pendant l'installation et la suppression des applications) ainsi que les intentions correspondantes. Et voilà.

La méthode alternative que j'ai utilisée est la suivante : J'ai essayé de désinstaller l'application en utilisant l'interface graphique jusqu'à ce qu'on me montre la confirmation finale. Je n'ai pas confirmé mais j'ai exécuté la commande

adb shell dumpsys activity recents   # for Android 4.4 and above
adb shell dumpsys activity activities # for Android 4.2.1

Entre autres choses, il m'a montré des détails utiles sur l'intention passée en arrière-plan. Exemple :

intent={act=android.intent.action.DELETE dat=package:com.bartat.android.elixir#com.bartat.android.elixir.MainActivity flg=0x10800000 cmp=com.android.packageinstaller/.UninstallerActivity}

Ici, vous pouvez voir l'action, les données, le drapeau et le composant - suffisant pour l'objectif.

0 votes

Je comprends que la question est ancienne et que ma réponse n'est peut-être pas très pertinente. Mais elle est tout à fait pertinente pour les versions d'Android utilisées par la majorité des utilisateurs de nos jours.

7voto

sttaq Points 633

Les réponses ci-dessus fonctionnent mais si vous avez plusieurs appareils connectés à votre ordinateur, la commande suivante peut être utilisée pour supprimer l'application de l'un d'entre eux :

adb -s <device-serial> shell pm uninstall <app-package-name>

Si vous voulez connaître le numéro de série du périphérique, utilisez la commande suivante :

adb devices -l

Vous obtiendrez ainsi une liste des périphériques connectés. La colonne de gauche indique les numéros de série des dispositifs.

6voto

Lukasz Dynowski Points 1441

Je suppose que vous activez developer mode sur votre appareil Android, vous êtes connecté à votre appareil et vous avez un accès shell ( adb shell ).

Une fois que c'est fait, vous pouvez désinstaller l'application avec cette commande pm uninstall --user 0 <package.name> . 0 est l'identifiant de la racine -De cette façon, vous n'avez pas besoin de Root votre appareil.

Voici un exemple de ce que j'ai fait sur mon Huawei P110 lite

# gain shell access
$ adb shell

# check who you are
$ whoami
shell

# obtain user id
$ id
uid=2000(shell) gid=2000(shell)

# list packages
$ pm list packages | grep google                                                                                                                                                         
package:com.google.android.youtube
package:com.google.android.ext.services
package:com.google.android.googlequicksearchbox
package:com.google.android.onetimeinitializer
package:com.google.android.ext.shared
package:com.google.android.apps.docs.editors.sheets
package:com.google.android.configupdater
package:com.google.android.marvin.talkback
package:com.google.android.apps.tachyon
package:com.google.android.instantapps.supervisor
package:com.google.android.setupwizard
package:com.google.android.music
package:com.google.android.apps.docs
package:com.google.android.apps.maps
package:com.google.android.webview
package:com.google.android.syncadapters.contacts
package:com.google.android.packageinstaller
package:com.google.android.gm
package:com.google.android.gms
package:com.google.android.gsf
package:com.google.android.tts
package:com.google.android.partnersetup
package:com.google.android.videos
package:com.google.android.feedback
package:com.google.android.printservice.recommendation
package:com.google.android.apps.photos
package:com.google.android.syncadapters.calendar
package:com.google.android.gsf.login
package:com.google.android.backuptransport
package:com.google.android.inputmethod.latin

# uninstall gmail app
pm uninstall --user 0 com.google.android.gms

0 votes

--user 0 pour effectuer la suppression en tant que Racine est très utile

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X