¿Hay alguna forma de enumerar todas las aplicaciones instaladas en su teléfono y los permisos que requieren en una sola página, o exportar la lista para que pueda ser auditada fácilmente?
Utilice aplicaciones de mercado como Permission Watchdog o Permissions . Además, hay varios otros.
Otra aplicación que terminé usando en lugar de Permisos es Permisos RL . Prefiero la interfaz. En cuanto a cuál funciona mejor, no lo sé.
aSpotCat también es una buena aplicación para la auditoría de permisos.
Permission Friendly Apps enumerará las aplicaciones instaladas por orden de los requisitos de permisos más exigentes a los menos exigentes. (Sin embargo, en realidad no rastrea ni audita ni ajusta su comportamiento).
Dado que no se menciona ninguna versión de Android en la pregunta, propongo una respuesta basada en la línea de comandos relevante para la versión de Android 4.2.1 y superior. Idealmente, esta es una solución independiente del sistema operativo, es decir, sistema operativo en PC.
Requiere el binario busybox . Si el dispositivo está rooteado, instale la aplicación Busybox . De lo contrario, descargue el binario de busybox de la fuente oficial , cambie el nombre del binario a busybox , configure el permiso ejecutable compatible con Linux en ese binario para todos y muévalo al dispositivo usando
adb push LOCAL_FILE /data/local/tmp/ # LOCAL_FILE is the file path where busybox binary is located in PC
Requiere aapt binario. Si está ejecutando un CM o su ROM derivada, ignore este requisito. De lo contrario, para Android 4.x, puede considerar descargar el binario desde aquí , cambiar el nombre del binario a aapt , establecer un permiso ejecutable compatible con Linux en ese binario para todos y moverlo al dispositivo usando
adb push LOCAL_FILE /data/local/tmp/ # LOCAL_FILE is the file path where busybox binary is located in PC .
Para usuarios de Android 5.x, pida ayuda a Google.
Aquí está mi pequeño guión que hace la magia:
#!/sistema/bin/sh # Compruebe si el binario de busybox existe en /data/local/tmp/ o /system/xbin. Establezca la ruta del binario detectado en la variable busybox o salga si el archivo no existe o el permiso ejecutable no está configurado [[ -x /data/local/tmp/busybox]] && busybox=/data/local/tmp/busybox || { [[ -x /sistema/xbin/caja ocupada ]] && caja ocupada=/sistema/xbin/caja ocupada || { printf "busybox binario no encontrado o permiso ejecutable no establecido. Saliendo\n" && exit; }; } # Compruebe si el binario aapt existe en /data/local/tmp o /system/bin o /system/xbin. Establezca la ruta del binario detectado en la variable aapt o salga si el archivo no existe o el permiso ejecutable no está establecido [[ -x /datos/local/tmp/aapt ]] && aapt=/datos/local/tmp/aapt || { [[ -x /sistema/bin/aapt ]] && aapt=/sistema/bin/aapt || { [[ -x /sistema/xbin/aapt ]] && aapt=/sistema/xbin/aapt || { printf "aapt binario no encontrado o permiso ejecutable no establecido. Saliendo\n" && exit; }; }; } # Liste el nombre del paquete de todas las aplicaciones instaladas y guárdelas en el archivo packages.txt en /sdcard paquetes lista pm | $busybox sed 's/^paquete://g' | $busybox sort -o /sdcard/packages.txt # Para cada nombre de paquete en la salida que acabamos de guardar, obtenga la etiqueta de la aplicación usando $ruta y $etiqueta, imprima una línea y finalmente enumere los permisos otorgados a la aplicación mientras lee la línea; hacer ruta=$(pm ruta $línea | $busybox sed 's/^paquete://g'); label=$($aapt d credencialización $ruta | $busybox grep 'aplicación: label=' | $busybox cut -d "'" -f2); $busybox printf "Permisos para la aplicación $etiqueta con nombre de paquete $línea\n"; paquete dumpsys $línea | $busybox sed -e '1,/permisos concedidos:/d' -e '/^\s*$/,$d' | ordenación de $busybox; $busybox printf "\n"; hecho < /sdcard/packages.txt
Salida de demostración:
Permisos para la aplicación DisableService con nombre de paquete cn.wq.disableservice android.permiso.READ_EXTERNAL_STORAGE android.permiso.WRITE_EXTERNAL_STORAGE Permisos para la aplicación Indecent Xposure con el nombre de paquete co.vanir.indecentxposure android.permiso.RECEIVE_BOOT_COMPLETED Permisos para etiquetas de aplicaciones con el nombre de paquete com.android.apps.tag android.permiso.CALL_PHONE android.permiso.NFC android.permiso.LEER_CONTACTOS android.permiso.WAKE_LOCK android.permiso.WRITE_SECURE_SETTINGS ... ... Permisos para el proveedor de temas de aplicaciones con el nombre de paquete org.cyanogenmod.themes.provider android.permiso.ACCESO_NOTIFICACIONES android.permiso.ACCESS_THEME_MANAGER android.permiso.INTERNET android.permiso.READ_THEMES android.permiso.WRITE_SECURE_SETTINGS android.permiso.WRITE_SETTINGS android.permiso.WRITE_THEMES
Guarde el script en la PC en un archivo llamado perm_script.sh
y muévalo a /sdcard usando
adb push LOCAL_FILE /sdcard/ # LOCAL_FILE is the path where you saved that file into PC
Ejecutar ese archivo
adb shell sh /sdcard/perm_script.sh > OUTPUT_FILE # OUTPUT_FILE is the path where you want to save the final output
Cuanto mayores sean las aplicaciones instaladas en el sistema, mayor será el tiempo para que el comando complete la ejecución. En mi dispositivo, tomó alrededor de tres minutos.
Relacionado: ¿Existe una forma nativa de encontrar todas las aplicaciones instaladas que tienen acceso a una función del teléfono?
Denis Nikolaenko
bbaja42
Cambio de negro
Denis Nikolaenko
Cambio de negro