Habilitar y deshabilitar aplicaciones del sistema a través de ADB

¿Hay algún comando adb para habilitar/deshabilitar una aplicación del sistema?

Gracias

Respuestas (4)

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:

  1. En mis pruebas, las aplicaciones deshabilitadas de esta manera desaparecen por completo de la lista Configuración > Aplicaciones. Ni siquiera parecen mostrarse en la pestaña "Deshabilitado"
  2. Puede volver a habilitar las aplicaciones con pm enable <package name>. De hecho, esta parece ser la única forma de volver a habilitarlos, según mi experiencia.
¿Es posible evitar ocultar la aplicación elegida al deshabilitarla?
@androiddeveloper No. Ocultar la aplicación por completo , incluso desde la interfaz de usuario, es la idea detrás de esto.
@Izzy Ya veo. ¿Es posible hacer lo contrario, es decir, simplemente esconderse, sin deshabilitar?
Teóricamente sí, supongo; pero no tengo idea de como hacerlo. Hay algunas "aplicaciones" en las tiendas que no aparecen en ninguna parte cuando se instalan (ya que, por ejemplo, solo brindan configuraciones adicionales en algunas otras aplicaciones u ofrecen algunos "servicios invisibles" como "administradores de cuentas" para servicios específicos), lo que demuestra que debería funcionar de algun modo; pero me temo que eso se debe hacer en la aplicación Manifesto similar (no soy un desarrollador de Android, así que no puedo decirlo).
es posible habilitar la aplicación en su página de playstore.

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 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

PACKAGEse 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 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.

de todo lo demás en esta página, solo cmd package suspend <package>funcionó como se esperaba. Todo lo demás arrojaría excepciones.
@iSWORD, ¿qué dispositivo Android y qué versión de Android está usando?
Estoy usando un Lenovo P2a42 con AOSP 11
Puede ser un problema del iniciador, pero para mí, el pm disable-usercomando 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 hideen lugar de disable. No estoy seguro de cuál es el mejor, pero vea esta respuesta . Lo contrario de hidees unhide(es posible que sea necesario reiniciar para efectuar unhide).

Puede listar paquetes con pm list packages --user 11. Dale -ea listar paquetes habilitados o -dsi 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.