81 votos

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

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

Gracias

94voto

David Negron Puntos 971

Sí. El comando es pm disable . Debes ser root para hacer esto:

Abre la terminal y obtén permisos de root:

PC> adb shell
shell@hammerhead:/ $ su

Lista todas las aplicaciones habilitadas, filtra por "calculadora":

root@hammerhead:/ # pm list packages -e | grep 'calculadora'
package:com.android.calculator2

Deshabilita la aplicación:

root@hammerhead:/ # pm disable com.android.calculator2
Paquete com.android.calculator2 nuevo estado: deshabilitado

Lista 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 cosas que vale la pena señalar:

  1. En mis pruebas, las aplicaciones deshabilitadas de esta manera desaparecen completamente de la lista de aplicaciones en Ajustes. Ni siquiera parecen ser mostradas en la pestaña "Deshabilitadas"
  2. Puedes volver a habilitar aplicaciones con pm enable . De hecho, parece ser la única forma de volver a habilitarlas, en mi experiencia.

1 votos

¿Es posible evitar que la aplicación elegida se oculte al deshabilitarla?

1 votos

@androiddeveloper No. Ocultar la aplicación completamente, incluyendo la interfaz de usuario, es la idea principal detrás de ella.

1 votos

@Izzy Entiendo. ¿Es posible hacer lo contrario, es decir, solo ocultar sin desactivar?

23voto

Firelord Puntos 161

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


Consulte 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 root):

adb shell
su
pm disable PACKAGE              # deshabilita la aplicación y la oculta en Configuración -> Aplicaciones
pm hide PACKAGE                 # alternativa; para Android Lollipop y superior
cmd package suspend PACKAGE     # alternativa; el paquete sigue visible en el lanzador y la aplicación de Configuración pero no se puede usar; una característica de Administración de dispositivos

PACKAGE se refiere al nombre del paquete de la aplicación

Para reincorporar la aplicación, reemplace deshabilitar con habilitar, ocultar con mostrar, y suspender con reactivar en el comando mencionado y ejecútelo con privilegios de root.

Si tiene Android KitKat o superior y no tiene acceso root, use adb en la PC para ejecutar este comando:

adb shell pm block PACKAGE         # para Android KitKat
adb shell pm hide  PACKAGE         # solo para Android Lollipop
adb shell pm disable-user PACKAGE  # alternativa a \`pm hide\`; para Android Lollipop y superior; esto funciona igual que deshabilitar una aplicación a través de la aplicación de Configuración

Para reincorporar la aplicación:

adb shell pm unblock PACKAGE   # para Android KitKat
adb shell pm unhide PACKAGE    # solo para Android Lollipop y solo si utilizó \`pm hide\` anteriormente
adb shell pm enable PACKAGE    # para Android Lollipop y superior

Los cambios surtirán efecto de inmediato.

0 votos

De todo lo demás en esta página, solo cmd package suspend funcionó como se esperaba. Todo lo demás lanzaría excepciones.

0 votos

@iSWORD ¿Qué dispositivo Android y versión de Android estás utilizando?

1 votos

Estoy usando un Lenovo P2a42 con AOSP 11 en funcionamiento

11voto

starfry Puntos 178

En respuesta a la respuesta de @eldarerathis, puedes deshabilitar una aplicación para un usuario específico. Usé este método para eliminar algunas aplicaciones de un usuario restringido que no estaban en la pantalla de configuración del usuario. Todos los comandos desde una adb shell. Se requiere acceso root para realizar los cambios.

Primero, obtén el ID del usuario:

$ pm list users
Users:
  UserInfo{0:Alice:13} running
  UserInfo{11:Bob:18} running

Luego

$ pm disable --user 11 com.cyanogenmod.filemanager
Package com.cyanogenmod.filemanager new state: disabled-user

Para reactivar

# 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 cuál es mejor, pero consulta esta respuesta. El opuesto de hide es unhide (puede requerirse un reinicio para efectuar unhide).

Puedes listar paquetes con pm list packages --user 11. Usa -e para listar paquetes habilitados o -d si quieres ver los deshabilitados. Aparentemente no hay filtro para paquetes ocultos.

FWIW: Probé lo anterior en Lollipop con CM 12.1 en un Amazon Fire (KFFOWI).

1 votos

No es necesario tener acceso root, deshabilité una aplicación del sistema de LineageOS ejecutando pm disable-user --user 0 org.lineageos.audiofx (en adb shell).

0 votos

^ Android 13 / LineageOS 20; puede "ocultar" en lugar de desactivar.

3voto

S.Goswami Puntos 121

Quería desactivar la tienda de aplicaciones en el teléfono Vivo porque mi sobrina siempre instala varios gigabytes de juegos. Para algunos de ustedes esto podría funcionar, no se necesita ser root.

Para desactivar la tienda de aplicaciones:

$ adb shell pm uninstall --user 0 -k com.android.vending
Éxito

Esto desinstala la aplicación. Pero también hay una forma de restaurar la aplicación:

$ adb shell pm install-existing com.android.vending
Paquete com.android.vending instalado para usuario: 0

Por supuesto, la tienda de aplicaciones es un ejemplo. Esto debería funcionar para la mayoría de las aplicaciones del sistema. Desde la PC, puedes ejecutar esto directamente, o si estás en un shell de ADB, ejecuta el comando después de adb shell.

Puedes usar adb shell pm list packages, redireccionar eso a grep para buscar el paquete fácilmente.

Nota que esto desinstala la aplicación, la bandera -k debería mantener los datos. Pero en mi caso todos los datos fueron eliminados. Por lo tanto, podría haber pérdida de datos durante el proceso de desinstalación de aplicaciones del sistema.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X