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

49

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

Gracias

laos
fuente

Respuestas:

67

Si. El comando es pm disable <package name>. Debe ser root para hacer esto:

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

Listar 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 aplicaciones con pm enable <package name>. De hecho, esta parece ser la única forma de volver a habilitarlos, en mi experiencia.
eldarerathis
fuente
¿Es posible evitar ocultar la aplicación elegida al deshabilitarla?
Desarrollador de Android
1
@androiddeveloper No. Ocultar la aplicación por completo , incluso desde la interfaz de usuario, es la idea completa detrás de ella.
Izzy
@ Izzy ya veo. ¿Es posible hacer lo contrario, es decir, solo esconderse, sin desactivar?
Desarrollador de Android el
Teóricamente sí, supongo; pero no tengo idea de cómo hacerlo. Hay algunas "aplicaciones" en las tiendas que no aparecen en ninguna parte cuando se instalan (ya que, por ejemplo, solo proporcionan configuraciones adicionales en otras aplicaciones u ofrecen algunos "servicios invisibles" como "administradores de cuentas" para servicios específicos), lo que demuestra que debería funcionar de alguna manera; 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).
Izzy
Es posible habilitar la aplicación por su página de Play Store.
Pantalla de información
7

Además de la respuesta de @eldarerathis, puede deshabilitar una aplicación para un usuario específico. Utilicé 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 a la raíz para realizar cambios.

En primer lugar, obtenga la identificación del usuario:

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

Entonces

$ 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 en hidelugar de disable. No estoy seguro de cuál es el mejor, pero vea esta respuesta . Lo contrario de hidees unhide(puede ser necesario reiniciar para efectuar unhide).

Puede enumerar paquetes con pm list pacakges --user 11. Dar -ea la lista de paquetes habilitados o -dsi desea ver los deshabilitados. Parece que no hay filtro para paquetes ocultos.

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

starfry
fuente
3

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

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

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

Para reinstalar la aplicación, reemplace desactivar con permitir , ocultar con Unhide , y suspender con unsuspend en la dicha orden 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 hide PAQUETE # solo para Android Lollipop
adb shell pm disable-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 muestra el PAQUETE # para Android Lollipop y solo si usó `pm hide` anteriormente
adb shell pm enable PACKAGE # para Android Lollipop y superior

Los cambios tendrían lugar de inmediato.

Señor del fuego
fuente