Y a-t-il une raison technique pour laquelle les applications qui n'ont besoin que de leurs propres données ne sont pas limitées à un seul dossier ? Je suis conscient que certaines applications utilisent les données d'autres applications, mais je serais beaucoup plus enclin à installer une application qui ne demanderait la permission de stocker des fichiers que dans un seul dossier spécifique.
Réponses
Trop de publicités?Les cartes SD utilisent généralement le système de fichiers FAT, qui n'autorise pas les autorisations de système de fichiers. Cela signifie que le système d'exploitation Android devrait gérer une liste personnalisée de fichiers, leurs autorisations, un mappage des applications aux fichiers/dossiers, etc. afin d'empêcher les applications d'accéder à l'ensemble de la carte. Ce serait un désordre terrible. Non seulement compliqué, mais il nécessiterait beaucoup d'espace de stockage. Et puis un jour, vous sortez votre carte SD et enlevez quelques photos, et tout le système se casse la figure. Vous voyez le genre.
Il existe différents mécanismes pour stocker des données dans une application Android qui ne nécessitent pas l'autorisation d'accès à la carte SD. Vous pouvez créer des bases de données, stocker des paramètres d'application, créer des fichiers sur le stockage interne. Tout cela ne nécessitera pas de permissions spécifiques et ces données ne sont accessibles que par l'application qui les a créées.
D'un autre côté, si une application a besoin de l'autorisation de la carte SD, c'est peut-être parce qu'elle a une très grande quantité de données à stocker ou qu'elle veut modifier/ajouter/supprimer des fichiers, comme dans un gestionnaire de fichiers. Mais pour les données importantes spécifiques à une application, la carte SD n'est pas recommandée car elle peut être retirée à tout moment (ou montée comme un lecteur USB) et non disponible pour les applications.
Je pense que beaucoup d'applications qui demandent une autorisation d'accès au SD pourraient utiliser un autre type de stockage de données qui ne nécessiterait pas cela. De plus, les fichiers créés sur la carte SD par une application ne seront pas supprimés lors de la désinstallation de l'application, mais tous les autres types de stockage de données internes le seront. Il me semble donc qu'une meilleure pratique de développement consisterait à ne pas utiliser la carte SD si ce n'est pas nécessaire, et comme vous l'avez mentionné, cela ne ferait pas fuir les gens comme le font les applications qui accèdent à toute la carte SD.
Comme l'a expliqué Matthew Read, avec une carte SD normale utilisant le système de fichiers FAT, il n'est pas possible d'utiliser les autorisations de fichiers pour contrôler l'accès des applications, de la même manière qu'Android contrôle leur accès aux fichiers sur le système de fichiers interne. Mais maintenant que les téléphones Android utilisent le stockage interne au lieu des cartes SD, et qu'ils utilisent MTP pour offrir un accès par USB au lieu de la classe de périphérique de stockage de masse, les téléphones Android sont libres d'utiliser de meilleurs systèmes de fichiers pour leur stockage de données volumineuses.
KitKat a ajouté un nouveau mécanisme permettant aux applications de stocker des fichiers volumineux. Dans le stockage USB interne, chaque application dispose d'un répertoire de données privé, tout comme dans la mémoire plus petite de l'appareil. (Sur certains appareils, il peut même s'agir du même système de fichiers.) Les applications peuvent accéder à leur répertoire privé sur ce système de fichiers sans avoir besoin d'autorisations spéciales. Sur les versions d'Android antérieures à KitKat, les applications peuvent désormais demander uniquement les autorisations "lire la carte SD" et "écrire sur la carte SD" si elles n'ont besoin de la carte SD que pour utiliser un tel répertoire privé.
Les anciens répertoires partagés tels que "Téléchargements", "Musique" et "Notifications" sont toujours présents, comme auparavant, et nécessitent toujours les mêmes autorisations d'accès. Les anciennes applications qui n'ont pas été mises à jour pour KitKat utiliseront toujours ces répertoires, et non les nouveaux répertoires privés.