Comando adb shell para que aparezca el cuadro de diálogo de desinstalación del paquete de Android

126

Tengo adbfuncionando y el dispositivo está conectado a mi sistema en modo de depuración,

Quiero desinstalar la aplicación usando el intento de inicio usando adb shell am start <INTENT>

No quiero desinstalar usando adb uninstall com.company.apppackagey no quiero hacerlo incluso usandoadb shell pm uninstall com.company.apppackage

¿Cómo puedo enviar una intención con android.intent.action.DELETEacción para un paquete específico que permite al usuario ver el mensaje y desinstalar el programa?

Rinkal Bhanderi
fuente

Respuestas:

178

Puedes hacerlo desde adb usando este comando:

adb shell am start -a android.intent.action.DELETE -d package:<your app package>
pcans
fuente
2
¿puede decir qué paquete -d: <su paquete de aplicaciones> representa? alguna documentación hay?
Rinkal Bhanderi
11
-d significa datos. -a significa acción. Está iniciando una Intención con acción como "Eliminar" y datos como "paquete: su paquete de aplicación". Esto iniciará la actividad encargada de desinstalar paquetes e intentará desinstalar el paquete proporcionado en los datos. La documentación se puede encontrar usando el comando "adb shell am".
pcans
No, si su aplicación contiene un DevicePolicyManager activado, primero deberá deshabilitarlo manualmente.
pcans
El comando anterior muestra el cuadro de diálogo de confirmación Eliminar esta aplicación en el teléfono. Usar en su adb shell pm uninstall -k com.packagenamelugar.
ViliusK
1
Esto no funcionaría para las aplicaciones del sistema. Aparecería el cuadro de diálogo, pero la aplicación no se desinstalaría.
IgorGanapolsky
218

Use este comando en cmd:

adb shell pm desinstalar -k com.packagename

Por ejemplo:

adb shell pm uninstall -k com.fedmich.pagexray

El -kindicador le dice al administrador de paquetes que mantenga los directorios de caché y datos, aunque se elimine la aplicación. Si desea una desinstalación limpia, no especifique -k.

neverever415
fuente
8
Me gusta más esta respuesta. Porque, con este no obtendrá el cuadro de diálogo de confirmación de recuperación.
joctee
2
@joctee, yo también, pero la pregunta decía específicamente que no querían desinstalar usando una intención.
OrhanC1
@Lohoris, lo he hecho funcionar ... asegúrate de eliminar el "+" en la respuesta de
Neverever
32
@Johnny_D El indicador -k le dice al administrador de paquetes que mantenga los directorios de caché y datos, aunque la aplicación se haya eliminado. Si desea una desinstalación limpia, no especifique -k.
Yojimbo
2
Sigo recibiendo mensajes de error cuando intento usar este comando.
IgorGanapolsky
12

Con ADB, puede usar cualquiera de los siguientes tres comandos:

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"

Reemplace PAQUETE con el nombre del paquete de la aplicación de usuario instalada. La aplicación no debe ser un administrador de dispositivos para que el comando funcione correctamente. Todos esos comandos requerirían la confirmación del usuario para eliminar la aplicación.

Los detalles de dicho comando se pueden conocer comprobando el uso de am usando adb shell am.

Obtuve la información sobre esos comandos usando Elixir 2 (use cualquier aplicación equivalente). Lo usé para mostrar las actividades de la aplicación Package Installer (la GUI que ves durante la instalación y eliminación de aplicaciones), así como los intentos relacionados. Ahí tienes.

La forma alternativa que usé fue: intenté desinstalar la aplicación usando la GUI hasta que se me mostró la confirmación final. No lo confirme pero ejecuté el comando

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

Entre otras cosas, me mostró detalles útiles de la intención pasada en segundo plano. Ejemplo:

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

Aquí puede ver la acción, los datos, el indicador y el componente, lo suficiente para el objetivo.

Señor del Fuego
fuente
Entiendo que la pregunta es antigua, por lo que mi respuesta puede no ser muy relevante. Pero es totalmente relevante para las versiones de Android utilizadas por la mayoría de los usuarios en la actualidad.
Señor del
6

Si bien las respuestas anteriores funcionan, pero en caso de que tenga varios dispositivos conectados a su computadora, el siguiente comando se puede utilizar para eliminar la aplicación de uno de ellos:

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

Si desea averiguar la serie del dispositivo, utilice el siguiente comando:

adb devices -l

Esto le dará una lista de dispositivos conectados. La columna izquierda muestra los números de serie del dispositivo.

sttaq
fuente
3

En mi caso, hago una adb shell pm list packagespara ver primero cuáles son los paquetes / aplicaciones instalados en mi dispositivo o emulador de Android, luego, al localizar el paquete / aplicación deseado, hago un adb shell pm uninstall -k com.package.name.

warfreak92
fuente
3

Supongo que habilita developer modeen su dispositivo Android y está conectado a su dispositivo y tiene acceso de shell ( adb shell).

Una vez hecho esto, puede desinstalar la aplicación con este comando pm uninstall --user 0 <package.name>. 0 es la identificación de la raíz, de esta forma no necesita rootear demasiado su dispositivo

Aquí hay un ejemplo de cómo lo hice en mi 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
Lukasz Dynowski
fuente
--user 0realizar la eliminación como root es muy útil
bw_üezi