¿Hay algún comando adb para habilitar/deshabilitar una aplicación del sistema?
Gracias
Sí. El comando es pm disable <package name>
. Debes ser root para hacer esto:
Abra shell y obtenga root:
PC> adb shell
shell@hammerhead:/ $ su
Enumere todas las aplicaciones habilitadas, filtre por "calculadora":
root@hammerhead:/ # pm list packages -e | grep 'calculator'
package:com.android.calculator2
Deshabilitar aplicación:
root@hammerhead:/ # pm disable com.android.calculator2
Package com.android.calculator2 new state: disabled
Lista de todas las aplicaciones deshabilitadas:
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:/ #
Algunas otras cosas que vale la pena señalar:
pm enable <package name>
. De hecho, esta parece ser la única forma de volver a habilitarlos, según mi experiencia.Esto debería funcionar independientemente de si la aplicación es una aplicación del sistema o una aplicación de terceros (instalada por el usuario).
Vea mi respuesta en Determine el nombre del paquete de su aplicación para obtener el nombre del paquete de la aplicación en cuestión y use adb shell para ejecutar estos comandos ( requiere acceso de root ):
shell adb su pm disabled PACKAGE # desactiva la aplicación y la oculta en Configuración -> Aplicaciones pm ocultar PAQUETE # alternativa; para Android Lollipop y superior cmd paquete suspender PAQUETE # alternativa; el paquete permanece visible en la aplicación Lanzador y Configuración, pero no se puede usar; una función de Administración de dispositivos
PACKAGE
se refiere al nombre del paquete de la aplicación
Para restablecer la aplicación, reemplace deshabilitar con habilitar , ocultar con mostrar y suspender con unsuspend en dicho comando y ejecutarlo con privilegios de root.
Si tiene Android KitKat o superior y no tiene acceso de root , use adb en la PC para ejecutar este comando:
adb shell pm block PAQUETE # para Android KitKat adb shell pm ocultar PAQUETE # solo para Android Lollipop adb shell pm disabled-user PACKAGE # alternativa a `pm hide`; para Android Lollipop y superior; esto funciona como deshabilitar una aplicación a través de la aplicación Configuración
Para restablecer la aplicación:
adb shell pm desbloquear PAQUETE # para Android KitKat adb shell pm mostrar PAQUETE # para Android Lollipop y solo si usó `pm hide` anteriormente adb shell pm enable PACKAGE # para Android Lollipop y superior
Los cambios se producirían de inmediato.
cmd package suspend <package>
funcionó como se esperaba. Todo lo demás arrojaría excepciones.pm disable-user
comando no oculta el ícono de una aplicación de inmediato, tengo que reiniciar el iniciador para que los cambios surtan efecto.Además de la respuesta de @eldarerathis, puede deshabilitar una aplicación para un usuario específico. Usé este método para eliminar algunas aplicaciones de un usuario restringido que no figuraban en la pantalla de configuración del usuario. Todos los comandos de un adb shell
. Se requiere acceso raíz para realizar los cambios.
Primero, obtenga la identificación del usuario:
$ pm list users
Users:
UserInfo{0:Alice:13} running
UserInfo{11:Bob:18} running
Después
$ pm disable --user 11 com.cyanogenmod.filemanager
Package com.cyanogenmod.filemanager new state: disabled-user
Para volver a habilitar
# pm enable --user 11 com.cyanogenmod.filemanager
En este ejemplo, Alice puede usar el administrador de archivos pero Bob no.
Puedes hacer algo similar con hide
en lugar de disable
. No estoy seguro de cuál es el mejor, pero vea esta respuesta . Lo contrario de hide
es unhide
(es posible que sea necesario reiniciar para efectuar unhide
).
Puede listar paquetes con pm list packages --user 11
. Dale -e
a listar paquetes habilitados o -d
si quieres ver deshabilitados. Parece que no hay filtro para paquetes ocultos.
FWIW: probé lo anterior en Lollipop con CM 12.1 en un Amazon Fire (KFFOWI).
Quería deshabilitar la tienda de juegos en el teléfono Vivo porque mi sobrina siempre instala varios gigabytes de juegos. Para algunos de ustedes esto podría funcionar, no se requiere root.
Para deshabilitar la tienda de juegos:
$ adb shell pm uninstall --user 0 -k com.android.vending
Success
Esto desinstala la aplicación. Pero también hay una manera de restaurar la aplicación:
$ adb shell pm install-existing com.android.vending
Package com.android.vending installed for user: 0
Por supuesto, playstore es un ejemplo. Esto debería funcionar para la mayoría de las aplicaciones del sistema. Desde la PC, puede ejecutar esto directamente, o si está en un shell ADB, ejecute el comando después de adb shell
.
Puede usar adb shell pm list packages
, canalizar eso a grep para buscar el paquete fácilmente.
Tenga en cuenta que esto desinstala la aplicación, el indicador -k debe mantener los datos. Pero en mi caso , todos los datos fueron purgados/eliminados . Por lo tanto, puede haber pérdida de datos durante el proceso de desinstalación de las aplicaciones del sistema.
desarrollador de Android
izzy
desarrollador de Android
izzy
Manifest
o similar (no soy un desarrollador de Android, así que no puedo decirlo).Pantalla de información