web-dev-qa-db-fra.com

Commande adb Shell permettant d'afficher la boîte de dialogue de désinstallation du package Android

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

Je souhaite désinstaller une application à l'aide du lancement intentionnel à l'aide de 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 l'action Android.intent.action.DELETE pour un paquet spécifique permettant à l'utilisateur de voir l'invite et de désinstaller le programme?

126
Rinkal Bhanderi

Vous pouvez le faire depuis adb en utilisant cette commande:

adb Shell am start -a Android.intent.action.DELETE -d package:<your app package>
176
pcans

Utilisez cette commande dans cmd:

adb Shell pm désinstallez -k com.packagename

Par exemple:

adb Shell pm uninstall -k com.fedmich.pagexray

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

215
neverever415

À l'aide d'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 package 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écessiteraient une confirmation de l'utilisateur pour la suppression de l'application.

Les détails de ladite commande peuvent être connus en vérifiant l'utilisation de am en utilisant adb Shell am.

J'ai eu l'info sur ces commandes en utilisant Elixir 2 (utilisez n'importe quelle application équivalente). Je l'ai utilisé pour afficher les activités de l'application Package Installer (l'interface graphique que vous voyez lors de l'installation et de la suppression d'applications), ainsi que les intentions associées. Voilà.

La méthode alternative que j'ai utilisée était la suivante: j'ai tenté de désinstaller l'application à l'aide de l'interface graphique jusqu'à ce que la confirmation finale s'affiche. Je n'ai pas confirmé mais 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, cela m'a montré des détails utiles sur l'intention transmise à l'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, l’indicateur et le composant - assez pour l’objectif.

12
Firelord

Bien que les réponses ci-dessus fonctionnent, mais que plusieurs appareils soient connectés à votre ordinateur, vous pouvez utiliser la commande suivante 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

Cela vous donnera une liste de périphériques connectés. La colonne de gauche montre les publications en série.

6
sttaq

Dans mon cas, je fais un adb Shell pm list packages pour voir d’abord quels sont les packages/applications installés dans mon périphérique ou émulateur Android, puis lors de la localisation du package/de l’application souhaité, je fais un adb Shell pm uninstall -k com.package.name.

3
warfreak92

Je suppose que vous activez developer mode sur votre appareil Android et que vous êtes connecté à votre appareil et que vous disposez d'un accès Shell (adb Shell).

Une fois cela fait, vous pouvez désinstaller l'application avec cette commande pm uninstall --user 0 <package.name>. est l'id root - De cette façon, vous n'avez pas besoin de rooter trop 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
2
Lukasz Dynowski