Stockage interne
La zone de stockage interne se situe dans la mémoire non volatile et non amovible de l'appareil (que l'on nomme
mémoire permanente). Cette zone de stockage interne contient entre autres les fichiers système de l'OS.
Par défaut, les applications sont installées dans cette zone de stockage. Il est possible d'installer certaines applications sur l'espace de stockage externe avec certaines restrictions.
L'espace de stockage interne est toujours disponible pour une application même si l'appareil est connecté par USB à un ordinateur par exemple.
Une application peut créer, modifier ou supprimer des fichiers uniquement dans son propre répertoire (présent dans la zone de stockage interne). Ce répertoire est automatiquement créé lors de l'installation de l'application. Il se nomme généralement "/data/data/<Nom de package complet de l'application>. Par exemple : /data/data/fr.pcsoft.MonApplication. Les fichiers contenus dans ce répertoire ne sont pas accessibles par les autres applications.
Lors de la désinstallation de l'application, les fichiers créés dans ce répertoire et ses sous-répertoires sont automatiquement supprimés par le système.
Stockage externe
La zone de stockage externe peut se situer :
- dans la mémoire permanente de l'appareil,
- et/ou dans de la mémoire amovible (carte de stockage type SD Card).
Certains appareils divisent leur mémoire permanente en deux partitions, une dédiée au stockage interne et l'autre au stockage externe. Ainsi, même les appareils dépourvus d'emplacement pour une SDCard disposent bien deux zones de stockage distinctes.
Il est possible de trouver plusieurs zones de stockage externe sur un même appareil : par exemple, l'une correspond à la partition "externe" de la mémoire permanente et l'autre à la SDCard. Dans ce cas, on parle de zone de stockage externe primaire, secondaire, etc. Le choix de l'attribution de la zone de stockage primaire à tel ou tel emplacement dépend du constructeur.
La zone de stockage externe peut ne pas être accessible pour une application à un moment donné. C'est par exemple le cas lorsque l'application est connectée à l'ordinateur en mode stockage de masse USB.
Une application peut accéder en lecture ET en écriture à tous les fichiers et répertoires situés sur la ou les zone(s) de stockage externe de l'appareil.
Chaque application peut disposer de son propre répertoire dans chacune des zones de stockage externe de l'appareil.
- Le nom de ce répertoire est généralement de la forme : <racine stockage externe>/Android/data/<Nom de package complet de l'application>. Par exemple : /mnt/sdcard/Android/data/fr.pcsoft.MonApplication.
- Ce répertoire doit contenir les fichiers privés de l'application qui n'ont pas besoin d'être partagés avec d'autres applications (bien que n'importe quelle application puisse y avoir accès).
- Ce répertoire peut contenir des sous-répertoires avec des noms système prédéfinis pour le stockage des différents types de fichiers (musique, film, documents, téléchargement, etc.). Une utilisation correcte de ces répertoires prédéfinis permet une meilleure prise en charge de ces fichiers par le système.
- Les fichiers contenus dans le répertoire de l'application ne sont pas automatiquement scannés par le système (bien qu'il soit possible de le demander explicitement). Par exemple, les photos sauvegardées dans ce répertoire ne seront pas répertoriées dans les albums photo de l'appareil.
- Ce répertoire et les données qu'il contient seront automatiquement supprimés lors de la désinstallation de l'application.
Remarque : A partir d'Android 4.4 (KitKat), sur l'espace de stockage externe correspondant à de la mémoire amovible (SDCard), les applications peuvent créer, modifier ou supprimer de fichiers uniquement dans leur propre répertoire. Les autres fichiers de l'espace de stockage externe sont accessibles en lecture uniquement.
Si une application possède des fichiers publics qu'elle doit partager avec d'autres applications, il est recommandé de les stocker en dehors de son propre répertoire. Dans ce cas, les fichiers ne seront pas supprimés lors de la désinstallation de l'application.
L'espace de stockage primaire de l'appareil peut contenir des répertoires avec des noms système prédéfinis pour le stockage des différents types de fichiers publics d'une application (musique, film, documents, téléchargement, etc.). Une utilisation correcte de ces répertoires prédéfinis permet une meilleure prise en charge des fichiers par le système. En particulier, ces répertoires sont régulièrement scannés par le système pour être répertoriés et proposés par exemple lors de la sélection de médias.
Permissions :
- La permission READ_EXTERNAL_STORAGE est nécessaire pour accéder en lecture aux fichiers situés dans l'espace de stockage externe. Cette permission est automatique sur les appareils utilisant une version d'Android inférieure à 4.4.
- La permission WRITE_EXTERNAL_STORAGE est nécessaire pour accéder en écriture (création, modification, suppression) aux fichiers situés dans l'espace de stockage externe. Cette permission donne également implicitement le droit de lecture.
A partir d'Android 4.4 (KitKat), ces permissions ne sont plus nécessaires pour l'accès aux fichiers situés dans le répertoire de l'application.
A partir de Android 10, une application doit uniquement accéder aux fichiers présents dans des répertoires de l'application. L'accès à des fichiers situés en dehors de ces répertoires (en lecture ou en écriture) pourront échouer. Il est recommandé de ne pas utiliser les constantes du type
ssePublicxxx (avec la fonction
SysRepStockageExterne par exemple) pour éviter tout problème.
Remarque : Pour les applications Android utilisées sous Android 10 et générées avec WINDEV Mobile, le fonctionnement est inchangé (si vous utilisez le correctif 118661 ou la version 250Update 4 de WINDEV Mobile). Lorsque l'application est exécutée sous Android 11, de nouvelles restrictions apparaissent :
- une application ne peut plus lire ou écrire de fichiers sur le stockage externe en dehors :
- des répertoires publics "Documents", "Download", "Images", etc. : utilisation de la fonction SysRepStockageExterne avec les constantes ssePublicXXX.
- des répertoires propres à l'application : utilisation de la fonction SysRepStockageExterne avec les constantes sseAppXXX.
- dans les répertoires publics, une application peut accéder (en lecture ou en écriture) uniquement aux fichiers qu'elle a elle-même créés.
Remarque : si l'application est désinstallée puis réinstallée, elle n'aura plus accès aux fichiers créés par la précédente installation dans les répertoires publics du stockage externe.
Pour plus de détails, consultez
Android 11 : Modifications du comportement des applications.