2017-06-14 3 views
2

Je nettoie le code d'une application qui demande ce qui suit dans son manifeste:
android.permission.GET_ACCOUNTS
android.permission.AUTHENTICATE_ACCOUNTS
android.permission.MANAGE_ACCOUNTS
android.permission.USE_CREDENTIALS
android.permission.INTERACT_ACROSS_USERS_FULL
Quelles classes peuvent nécessiter * _ACCOUNTS et les permissions associées?

La question est: quelles classes/paquets d'importations dois-je rechercher lors de la recherche de ce qui pourrait être demander pour ceux-ci?

J'ai déjà effectué une recherche sur AccountManager - aucun résultat. Il est possible qu'ils ne soient plus nécessaires, mais je souhaite savoir à quel moment je peux être certain.

[EDIT] Les réglages de peluches pour vous aider à trouver ceci seraient encore meilleurs. Voici les miens: enter image description here

Je ne vois aucune option «permissions manquantes».
Si je supprime toutes les autorisations, y compris tous les réseaux, READ_PHONE_STATE et READ_EXTERNAL_STORAGE, l'application est générée, démarre, puis la solution WifiManager.getWifiState se bloque avec une SecurityException liée à ACCESS_WIFI_STATE.

[EDIT2] La vérification des "mésappariements de type" est activée. Not every version d'Android a utilisé l'annotation @RequiresPermission.
enter image description here

Ma config: compilation version SDK 23, 14 min, 22 cible, construire la version d'outils 25.0.1

+0

Si vous venez de supprimer les autorisations du manifeste, vous devriez obtenir quelques avertissements de charpie où vous avez besoin des autorisations, je suppose que je ne vois pas – lelloman

+0

@ lelloman. Voir éditer. – kaay

Répondre

1

Je viens de faire un essai, et vous devriez en effet obtenir un avertissement pour les autorisations manquantes. En fait ce n'est même pas un avertissement mais une erreur. L'option est Settings -> Editor -> Inspections -> Android -> Constant and Resource Type Mismatches, si vous lisez la description que vous verrez quelque chose comme

appel d'une méthode qui nécessite une autorisation sans avoir déclaré cette autorisation dans le

manifeste

Ce sur AS 2.2.3

MISE à JOUR:

Je viens de vérifier sur un projet avec 23 sdk la compilation, et dans le code source de AccountManager il est en fait @RequiresPermission

+0

Semble exactement ce dont j'ai besoin. Étrange si ce n'est pas le cas par défaut. Merci, j'y reviendrai lundi. – kaay

+0

OK, je l'ai activé et mis à "ERREUR", mais il ne se déclenche jamais, même sur une application de test qui a besoin de INTERNET, CAMERA et CALL_PHONE. Je parie sur le manque d'annotations @RequiresPermission. Question mise à jour Une idée de quoi d'autre ai-je besoin? – kaay

+0

hum, cela semble encore bizarre, vérifiez [this] (https://developer.android.com/studio/write/annotations.html#indirect-permissions), @RequiresPermission n'est pas réellement nécessaire pour la méthode exacte que vous appelez . – lelloman