2015-08-29 1 views
0

Il suffit de regarder à travers les autorisations pour mon application, et je me demandais si j'avais besoin de android.permission.READ_EXTERNAL_STORAGE dans mon manifeste lors de l'utilisation android:installLocation="auto".Confusion à propos de android: autorisations installLocation

J'ai eu un coup d'oeil à la developer docs qui ne mentionne rien sur les autorisations, mais other documentation états que j'ai besoin l'autorisation de lire à partir du stockage externe:

Pour lire ou écrire des fichiers sur le stockage externe, votre application doit acquérir les autorisations système READ_EXTERNAL_STORAGE ou WRITE_EXTERNAL_STORAGE.

En outre, les États documentation about the permission:

Permet à une application de lire à partir du stockage externe.

Toute application qui déclare l'autorisation WRITE_EXTERNAL_STORAGE se voit accorder implicitement cette autorisation.

Cette autorisation est appliquée à partir du niveau d'API 19. Avant le niveau d'API 19, cette autorisation n'est pas appliquée et toutes les applications ont toujours accès à la lecture depuis un stockage externe. Vous pouvez tester votre application avec l'autorisation activée en activant Protéger le stockage USB sous Options du développeur dans l'application Paramètres sur un appareil exécutant Android 4.1 ou version ultérieure.

À partir du niveau d'API 19, cette autorisation n'est pas requise pour lire/écrire des fichiers dans les répertoires spécifiques à l'application renvoyés par getExternalFilesDir(String) et getExternalCacheDir().

donc je ne suis pas sûr si je besoin de l'autorisation de l'attribut installLocation dans le fichier Manifest, car cela signifie que mon application va lire à partir du stockage externe, mais comme je l'ai dit, la documentation spécifique sur App Emplacement d'installation ne mentionne pas les autorisations.

Ai-je besoin de la permission?

Répondre

3

Vous n'avez pas besoin de l'autorisation. Avant que Android 6.0, android:installLocation n'affecte le stockage interne de votre application (par exemple, getFilesDir()). Cela n'affecterait que l'emplacement de votre fichier APK. Par conséquent, la permission ne s'applique pas.

Android 6.0 permet désormais aux utilisateurs de consacrer du stockage amovible (par exemple, une carte micro SD) comme un endroit pour installer des applications. Dans ce cas, votre stockage interne se trouve sur une partition chiffrée placée sur le stockage amovible. Toutefois, il ne s'agit toujours pas de stockage externe et l'autorisation ne s'applique donc pas.

+0

Nous vous remercions de votre réponse rapide et détaillée. Je vais accepter dès que SO me le permet, et je ne savais pas à propos de la nouvelle fonctionnalité Android 6.0 que vous avez expliqué dans le dernier paragraphe. –

+1

@ FarbodSalamat-Zadeh: Vous pouvez en apprendre plus sur le stockage amovible "adoptable" dans [la documentation d'aperçu 6.0] (http://developer.android.com/preview/behavior-changes.html#behavior-adoptable-storage). Pour le moment, ce n'est pas très pratique, car aucun appareil Nexus n'offre une carte micro SD, et avoir une clé USB OTG accrochée à votre téléphone ou votre tablette est un peu gênant ... :-) – CommonsWare