8 votes

Liste des permissions réglables par ADB

Je recherche une liste de permissions qui peuvent être définies avec adb.

Je pourrais simplement itérer à travers toutes les permissions et ignorer celles qui ont échoué, mais je préfère filtrer celles dont je sais qu'elles ne peuvent pas être définies à l'avance.

11voto

Irfan Latif Points 16863

Vous pouvez accorder ou révoquer uniquement les autorisations d'exécution (introduites dans Android 6 avec niveau de protection : dangerous ) - soit à partir du CLI ( adb shell ) ou GUI (Paramètres). Depuis l'aide du gestionnaire de paquets :

~$ pm
...
  grant [--user USER_ID] PACKAGE PERMISSION
  revoke [--user USER_ID] PACKAGE PERMISSION
    These commands either grant or revoke permissions to apps.  The permissions
    must be declared as used in the app's manifest, be runtime permissions
    (protection level dangerous), and the app targeting SDK greater than Lollipop MR1.
...

Pour obtenir une liste de tous les dispositifs sur le périphérique dangerous permissions :

~$ pm list permissions -g -d | awk -F: '/permission:/ {print $2}'

Ou obtenez directement de la source Android. Cette liste exclut toutes les permissions dangereuses définies par des paquets non-AOSP, par exemple celles fournies par les services Google Play. wget est une applet busybox, ou obtenir un binaire statique :

~$ wget -qO- https://raw.githubusercontent.com/aosp-mirror/platform_frameworks_base/android-9.0.0_r52/core/res/AndroidManifest.xml | grep -E 'protectionLevel=|<permission android:name=' | grep -B1 'protectionLevel=.*dangerous' | awk -F'"' '/permission/ {print $2}'

Ou pour éviter tout résultat erroné, préformatez .xml (vous devez obtenir xmllint ou un outil similaire) :

~$ wget -qO- https://raw.githubusercontent.com/aosp-mirror/platform_frameworks_base/android-9.0.0_r52/core/res/AndroidManifest.xml | xmllint --format - | grep 'protectionLevel=.*dangerous' | grep -o 'permission android:name=[^ ]*' | cut -d'"' -f2

En plus de dangerous les permissions, il est également possible de grant o deny o ignore certaines des permissions spéciales indiquées ci-dessous :
Paramètres → Apps et notifications → Avancé → Accès aux applications spéciales .
Ceux-ci ne sont pas gérés directement par le gestionnaire de paquets, mais appops - un cadre de contrôle des permissions secondaires. Il s'agit des éléments suivants signature qui ne peuvent être accordées qu'aux applications système. Sur Android 9 :

~$ wget -qO- https://raw.githubusercontent.com/aosp-mirror/platform_frameworks_base/android-9.0.0_r52/core/res/AndroidManifest.xml | grep -E 'protectionLevel=|<permission android:name=' | grep -B1 'protectionLevel=.*appop' | awk -F'"' '/permission/ {print $2}'
android.permission.MANAGE_IPSEC_TUNNELS
android.permission.SYSTEM_ALERT_WINDOW
android.permission.WRITE_SETTINGS
android.permission.REQUEST_INSTALL_PACKAGES
android.permission.PACKAGE_USAGE_STATS
android.permission.ACCESS_NOTIFICATIONS
android.permission.INSTANT_APP_FOREGROUND_SERVICE

Leurs correspondants appops les opérations ont noms similaires avec des différences mineures. Aussi quelques OPs dépendent de d'autres OP. Pour obtenir une liste complète des opérations que vous pouvez lire ou paramétrer par la ligne de commande :

~$ wget -qO- https://raw.githubusercontent.com/aosp-mirror/platform_frameworks_base/android-9.0.0_r52/core/java/android/app/AppOpsManager.java | awk '/int OP_/ {print $5}'

Pour plus de détails sur la façon d'utiliser appops voir des exemples de VIBRATE , REQUEST_INSTALL_PACKAGES , COARSE_LOCATION / FINE_LOCATION y BOOT_COMPLETED / RUN_IN_BACKGROUND .

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