web-dev-qa-db-fra.com

Comment puis-je utiliser adb grant ou adb revoke?

La documentation Android Android contient la description suivante des commandes adb grant et adb revoke.

grant <PACKAGE_PERMISSION>

Accordez des autorisations aux applications. Seules les autorisations facultatives déclarées par l'application peuvent être accordées.

revoke <PACKAGE_PERMISSION>

Révoquer les autorisations sur les applications. Seules les autorisations facultatives déclarées par l'application peuvent être révoquées.

Quelqu'un peut-il donner un exemple de la syntaxe correcte pour les utiliser?

Je suppose que ce serait une autorisation comme Android.permission.WRITE_EXTERNAL_STORAGE, ou peut-être simplement WRITE_EXTERNAL_STORAGE. Eh bien, j'ai essayé ceux-ci et plusieurs autres et je ne peux pas le faire fonctionner.

J'ai également essayé (en vain) plusieurs combinaisons de package et d'autorisation, ce qui est plus logique pour moi (cela ressemble à une commande qui modifierait une autorisation sur un package, pas tous)

40
gabriel

Ajouter:

adb Shell pm grant com.name.app Android.permission.READ_PROFILE

Ôter:

adb Shell pm revoke com.name.app Android.permission.READ_PROFILE

Cela a changé à la sortie de Android M, donc dans Lollipop (au moment de la rédaction de la réponse), vous deviez faire adb Shell première.

adb Shell 
pm grant com.name.app Android.permission.READ_PROFILE

Une liste complète des autorisations peut être trouvée ici . Si vous avez outils de construction Android configuré, vous pouvez voir les autorisations que l'application utilise. Première utilisation

adb Shell pm list packages -f

Copiez ensuite le package sur votre ordinateur:

adb pull /path/to/package/from/previous/step.apk

Obtenez ensuite les autorisations:

aapt d permissions path/to/app/on/computer.apk
60
Cynic

Si vous ne connaissez pas le nom de l'autorisation ou si vous souhaitez effacer toutes les autorisations que vous pouvez utiliser

adb Shell pm reset-permissions your.package.name 
5
ar-g

Voici donc une petite ligne de commande (mac/linux) pour accorder à votre application toutes les autorisations dont elle a besoin depuis la ligne de commande.

aapt d permissions ./path/to/your.apk \
  | sed -n \
    -e "s/'//g" \
    -e "/^uses-permission: name=Android.permission\./s/^[^=]*=//p" \
  | xargs -n 1 adb Shell pm grant com.your.package
3
JohnnyLambada