0 votos

¿Cómo hacer una lista de aplicaciones suspendidas?

Puede "suspender" las aplicaciones de los usuarios a través de cmd package suspend <packageName> (que actúa como pm disable las diferencias se explican en esta respuesta de @Firelord), y posteriormente los desanclajes mediante cmd package unsuspend <packageName> - que también funciona para las aplicaciones instaladas por el usuario. Sin embargo, parece que los paquetes suspendidos ya no aparecen en la lista a través de cmd package list packages - ni siquiera si -u (desinstalado) o -d (desactivado) se especifica; ni siquiera dumpsys package parece conocerlos ya.

¿Hay alguna forma de obtener una lista de paquetes suspendidos? La salida de la sintaxis no lo menciona. Pero como esas aplicaciones siguen apareciendo en el lanzador (aunque "en gris"), debe haber una forma de detectarlas.

1voto

Firelord Puntos 161

No soy particularmente bueno con los scripts de bash así que estoy publicando un poco de un feo one-liner que imprime los paquetes que están actualmente suspendidos. Probado en Android 11 y 12 (ambos emuladores de Android).

Funciona sin acceso Root :

adb shell
pm list packages -a | sed -e 's/^package://'| while read package; do status="$(dumpsys package $package | grep -o "suspended=true")"; if \[\[ "$status" == "suspended=true" \]\] then echo "$package"; fi; done

Lo que estamos haciendo en términos más simples es obtener los nombres de los paquetes de todas las aplicaciones instaladas; luego para cada paquete volcar su contenido usando dumpsys package y dentro de cada volcado comprobar la cadena que y otros menciona esta subcadena suspended=true . Si se encuentra, se imprime el nombre del paquete, si no, se pasa al siguiente nombre de paquete y se repite el proceso.

Si tienes acceso Root (no funcionará en Android 12) :

adb shell
su
grep 'suspended="true"' /data/system/users/0/package-restrictions.xml | cut -d '"' -f2

Esto es muy rápido comparado con la solución sin root. También imprime los nombres de los paquetes que están actualmente suspendidos.

1 votos

Gracias - pero el primer comando de nuevo no muestra los paquetes suspendidos (tampoco si se sustituye por el correspondiente más nuevo cmd ambos dan como resultado "opción desconocida -a"). El segundo funcionó después de una ligera modificación: Tuve que omitir el ="true" por alguna razón que no entiendo. Pero adb shell su -c grep 'suspended' /data/system/users/0/package-restrictions.xml | cut -d '"' -f2 Efectivamente, ha funcionado, ¡gracias!

1 votos

P.D.: mover el grep al PC también funciona: adb shell su -c cat /data/system/users/0/package-restrictions.xml |grep 'suspended="true"'| cut -d '"' -f2

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