7 votos

¿Cómo comprobar si un paquete está habilitado a través del shell?

He estado escribiendo una tarea de tasker para activar/desactivar un paquete. Sé que

adb shell pm enable com.android.contacts

habilitará el paquete y

adb shell pm disable com.android.contacts

lo desactivará.

Me gustaría saber si hay algún comando del shell que me diga si un paquete está en estado activado/desactivado. ¡Gracias de antemano! :)

16voto

Izzy Puntos 45544
pm list packages -d 2>/dev/null

listará todos los paquetes deshabilitados, uno por línea, precedido por la palabra clave package: - para que la salida sea como

package:com.android.exchange
package:com.android.email

Así que si toma esa salida y la "grep" para el nombre del paquete en cuestión, el paquete se activa si la salida está "vacía" y se desactiva en caso contrario. Alternativamente, si quiere un número (0/1), puede usar el comando wc utilidad:

pm list packages -d 2>/dev/null | grep com.android.exchange | wc -l

devolvería "1" en el ejemplo anterior, lo que significa que el paquete com.android.exchange está desactivado. Sin embargo, devolvería "0" si buscara com.foobar.app - lo que no significa necesariamente que com.foobar.app está activado, pero también podría significar que simplemente no está instalado :) Así que si quieres comprobarlo, puedes hacerlo ejecutando el mismo comando con pm list packages -e (para listar los paquetes habilitados).

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