comando shell adb per far apparire la finestra di disinstallazione del pacchetto Android


126

Ho in adbesecuzione e il dispositivo è collegato al mio sistema in modalità debug,

Voglio disinstallare l'app usando intent launch using adb shell am start <INTENT>

Non voglio disinstallare usando adb uninstall com.company.apppackagee non voglio farlo nemmeno usandoadb shell pm uninstall com.company.apppackage

Come posso inviare un intento con android.intent.action.DELETEun'azione per un pacchetto specifico che consenta all'utente di visualizzare il prompt e disinstallare il programma?

Risposte:


178

Puoi farlo da adb usando questo comando:

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

2
puoi per favore dire quale pacchetto -d: <il tuo pacchetto app> sta per? c'è della documentazione?
Rinkal Bhanderi,

11
-d significa dati. -a significa azione. Stai lanciando un Intento con azione come "Elimina" e dati come "pacchetto: il tuo pacchetto app". Ciò avvierà l'attività responsabile della disinstallazione dei pacchetti e tenterà di disinstallare il pacchetto fornito nei dati. La documentazione può essere trovata usando il comando "adb shell am".
pcans,

No, se la tua app contiene un DevicePolicyManager attivato, dovrai prima disabilitarlo manualmente.
pcans,

Il comando sopra mostra la finestra di dialogo di conferma Elimina app sul telefono. Usa adb shell pm uninstall -k com.packagenameinvece.
ViliusK,

1
Questo non funzionerebbe con le app di sistema. Verrà visualizzata la finestra di dialogo del prompt, ma l'app non verrà disinstallata.
IgorGanapolsky,

218

Usa questo comando in cmd:

adb shell pm uninstall -k nome_pacchetto

Per esempio:

adb shell pm uninstall -k com.fedmich.pagexray

Il -kflag indica al gestore pacchetti di mantenere la cache e le directory dei dati, anche se l'app viene rimossa. Se si desidera una disinstallazione pulita, non specificare -k.


8
Mi piace meglio questa risposta. Perché, con questo non otterrai la finestra di dialogo di conferma di ripristino.
giovedì

2
@joctee, anche io, ma la domanda specificava che non volevano disinstallare usando un intento.
OrhanC1,

@Lohoris, l'ho fatto funzionare .. assicurati di rimuovere il "+" dalla risposta di
neverever

32
@Johnny_D Il flag -k indica al gestore dei pacchetti di mantenere la cache e le directory dei dati, anche se l'app viene rimossa. Se si desidera una disinstallazione pulita, non specificare -k.
Yojimbo,

2
Continuo a ricevere messaggi di errore quando provo ad usare questo comando.
IgorGanapolsky,

12

Utilizzando ADB, è possibile utilizzare uno dei seguenti tre comandi:

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"

Sostituisci PACCHETTO con il nome del pacchetto dell'app utente installata. L'app non deve essere un amministratore del dispositivo affinché il comando funzioni correttamente. Tutti questi comandi richiederebbero la conferma dell'utente per la rimozione dell'app.

I dettagli di detto comando possono essere conosciuti controllando l'utilizzo di am usando adb shell am.

Ho ricevuto le informazioni su quei comandi usando Elixir 2 (usa qualsiasi app equivalente). L'ho usato per mostrare le attività dell'app Package Installer (la GUI che vedi durante l'installazione e la rimozione delle app) e le relative intenzioni. Ecco qua

Il modo alternativo che ho usato era: ho tentato di disinstallare l'app tramite la GUI fino a quando non mi è stata mostrata la conferma finale. Non ho confermato ma eseguo il comando

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

Tra l'altro, mi ha mostrato utili dettagli dell'intento passato in background. Esempio:

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

Qui puoi vedere l'azione, i dati, il flag e il componente - abbastanza per l'obiettivo.


Capisco che la domanda è vecchia, quindi la mia risposta potrebbe non essere molto pertinente. Ma è totalmente rilevante per le versioni di Android utilizzate dalla maggior parte degli utenti al giorno d'oggi.
Firelord,

6

Mentre le risposte sopra funzionano ma nel caso in cui siano collegati più dispositivi al computer, è possibile utilizzare il comando seguente per rimuovere l'app da una di esse:

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

Se vuoi scoprire il seriale del dispositivo, usa il seguente comando:

adb devices -l

Questo ti darà un elenco di dispositivi collegati. La colonna di sinistra mostra i numeri di serie del dispositivo.


3

Nel mio caso, faccio uno adb shell pm list packagesper vedere prima quali sono i pacchetti / app installati nel mio dispositivo o emulatore Android, quindi dopo aver individuato il pacchetto / app desiderato, faccio uno adb shell pm uninstall -k com.package.name.


3

Presumo che tu abiliti developer modesul tuo dispositivo Android e che tu sia connesso al tuo dispositivo e tu abbia accesso alla shell ( adb shell).

Una volta fatto, puoi disinstallare l'applicazione con questo comando pm uninstall --user 0 <package.name>. 0 è l'id di root, in questo modo non è necessario eseguire il root del dispositivo.

Ecco un esempio di come ho fatto sul mio 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

--user 0eseguire l'eliminazione come root è molto utile
bw_üezi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.