29 votes

Vérifiez facilement les autorisations de l'application en un seul endroit?

Existe-t-il un moyen de répertorier toutes les applications installées sur votre téléphone et les autorisations requises sur une seule page, ou d'exporter la liste afin qu'elle puisse facilement être auditée ?

14voto

Max Points 578

Utilisez des applications de marché comme Permission Watchdog ou Permissions. De plus, il en existe plusieurs autres.

0 votes

Malheureusement, l'application Market a un bug (ou une fonctionnalité intentionnelle ?) lorsque toutes les autorisations ne sont pas répertoriées lors de l'installation de l'application. Cela peut être un problème de compatibilité avec les logiciels conçus pour les anciennes versions d'Android... code.google.com/p/android/issues/detail?id=9365

2 votes

Peut-être inclure un commentaire dans votre réponse serait plus simple.

0 votes

@Nikolaenko, apparemment c'est fait exprès et changé maintenant: android.stackexchange.com/questions/605/…

4voto

Polsonby Points 11824

Une autre application que j'ai fini par utiliser à la place de Permissions est RL Permissions. Je préfère l'interface. En ce qui concerne laquelle fonctionne mieux, je ne sais pas.

2voto

Flow Points 18254

aSpotCat est également une bonne application pour l'audit des permissions.

0voto

siriusly Points 21

Les applications agréables en termes de permissions répertoriera les applications installées par ordre de leurs exigences en matière de permissions, de la plus exigeante à la moins exigeante. (Elle ne suit pas réellement, ne vérifie pas ou n'ajuste pas leur comportement, cependant.)

0voto

Firelord Points 23064

Comme aucune version d'Android n'est mentionnée dans la question, je propose une réponse basée sur la ligne de commande pour Android version 4.2.1 et supérieure. Il s'agit idéalement d'une solution indépendante de l'OS, c'est-à-dire de l'OS sur PC.

Dépendances

  • Nécessite adb à configurer dans le PC.

  • Nécessite busybox binaire. Si l'appareil est enraciné, installez Busybox app. Sinon, téléchargez le binaire busybox à partir de source officielle et renomme le binaire en busybox compatible avec Linux autorisation d'exécution sur ce binaire pour tout le monde et le déplacer dans le dispositif en utilisant

    adb push LOCAL_FILE /data/local/tmp/   # LOCAL_FILE is the file path where busybox binary is located in PC
  • Nécessite aapt binaire. Si vous utilisez un CM ou une ROM dérivée, ignorez cette exigence. Sinon, pour Android 4.x, vous pouvez envisager de télécharger le binaire à partir de aquí et renomme le binaire en aapt compatible avec Linux autorisation d'exécution sur ce binaire pour tout le monde et le déplacer dans le dispositif en utilisant

    adb push LOCAL_FILE /data/local/tmp/   # LOCAL_FILE is the file path where busybox binary is located in PC . 

    Pour les utilisateurs d'Android 5.x, demandez de l'aide à Google.

Voici mon petit script qui fait la magie :

#!/system/bin/sh

# Check if the busybox binary exists under /data/local/tmp/ or /system/xbin. Set the detected binary's path into the variable busybox or exit if file doesn't exist or executable permission not set
\[\[ -x /data/local/tmp/busybox \]\] && busybox=/data/local/tmp/busybox || { \[\[ -x /system/xbin/busybox \]\] && busybox=/system/xbin/busybox || { printf "busybox binary not found or executable permission not set. Exiting\\n" && exit; }; }
# Check if the aapt binary exists under /data/local/tmp or /system/bin or /system/xbin. Set the detected binary's path into the variable aapt or exit if file doesn't exist or executable permission not set
\[\[ -x /data/local/tmp/aapt \]\] && aapt=/data/local/tmp/aapt || { \[\[ -x /system/bin/aapt \]\] && aapt=/system/bin/aapt || { \[\[ -x /system/xbin/aapt \]\] && aapt=/system/xbin/aapt || { printf "aapt binary not found or executable permission not set. Exiting\\n" && exit; }; }; }

# List package name of all the installed apps and save them in the file packages.txt under /sdcard
pm list packages | $busybox sed 's/^package://g' | $busybox sort -o /sdcard/packages.txt

# For each package name in the output we just saved, get the app's label using $path and $label, print a line and then finally list the permissions granted to the app 
while read line; do 
    path=$(pm path $line | $busybox sed 's/^package://g'); 
    label=$($aapt d badging $path  | $busybox grep 'application: label=' | $busybox cut -d "'" -f2);  
    $busybox printf "Permissions for app $label having package name $line\\n"; 
    dumpsys package $line | $busybox sed -e '1,/grantedPermissions:/d' -e '/^\\s\*$/,$d' | $busybox sort;
    $busybox printf "\\n"; 
done < /sdcard/packages.txt

Sortie démo :

Permissions for app DisableService having package name cn.wq.disableservice
      android.permission.READ\_EXTERNAL\_STORAGE
      android.permission.WRITE\_EXTERNAL\_STORAGE

Permissions for app Indecent Xposure having package name co.vanir.indecentxposure
      android.permission.RECEIVE\_BOOT\_COMPLETED

Permissions for app Tags having package name com.android.apps.tag
      android.permission.CALL\_PHONE
      android.permission.NFC
      android.permission.READ\_CONTACTS
      android.permission.WAKE\_LOCK
      android.permission.WRITE\_SECURE\_SETTINGS
...
...
Permissions for app Themes Provider having package name org.cyanogenmod.themes.provider
      android.permission.ACCESS\_NOTIFICATIONS
      android.permission.ACCESS\_THEME\_MANAGER
      android.permission.INTERNET
      android.permission.READ\_THEMES
      android.permission.WRITE\_SECURE\_SETTINGS
      android.permission.WRITE\_SETTINGS
      android.permission.WRITE\_THEMES

Enregistrez le script en PC dans un fichier nommé perm_script.sh et le déplacer dans /sdcard en utilisant

adb push LOCAL_FILE /sdcard/   # LOCAL_FILE is the  path where you saved that file into PC

Exécutez ce fichier

adb shell sh /sdcard/perm_script.sh > OUTPUT_FILE   # OUTPUT_FILE is the path where you want to save the final output

Plus le nombre d'applications installées dans le système est important, plus le temps d'exécution de la commande sera long. Dans mon appareil, cela a pris environ trois minutes.

En rapport : Existe-t-il un moyen natif de trouver toutes les applications installées qui ont accès à une fonction du téléphone ?

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X