Android a eu beaucoup de changements sur la façon de gérer la carte SD et le stockage en général:
À partir de l'API 23 (Android 6), les choses semblent encore changer ...
Pour l'API 23, il y a au moins deux nouveautés liées au stockage:
Comme il n’existe pas d’appareil Android 6 avec une carte SD et que l’émulateur lui-même n’a pas vraiment la capacité d’utiliser une carte SD, il est toujours impossible de savoir ce qui se passe.
La carte SD obtiendra-t-elle l'accès à l'aide de File-API au lieu de DocumentFile?
Si je veux accéder à tous les chemins de stockage externes (y compris la carte SD), cela signifie-t-il que je dois demander deux fois ces autorisations: une pour le stockage externe principal et une pour la carte SD?
Les fichiers de la carte SD sont-ils accessibles de quelque manière que ce soit avant l'octroi manuel de l'autorisation?
Supposons que l'utilisateur ait choisi d'utiliser "Périphériques de stockage pouvant être adoptés", qu'est-ce que cela signifie pour les différentes fonctions permettant de récupérer les chemins des fichiers de l'application? Par exemple: getFilesDir, getExternalFilesDir, ...? La commande de getExternalFilesDirs changerait-elle à cause de cela?
Qu'advient-il des fichiers de l'application lorsque l'utilisateur déplace l'application de/vers la carte SD (à l'aide de "Adoptable Storage Devices")? Qu'en est-il des fichiers de l'application sur la carte SD? Resteraient-ils? Ou déménageraient-ils quelque part?
Par exemple, si l'application a "file1.txt" sur la carte SD, sur le chemin "/ storage/extSdCard/Android/data/appPackageName" et si le fichier est "file2.txt" (ou même le même nom) sur le stockage externe principal dans le chemin "/ storage/émulated/0/Android/data/appPackageName". Après le basculement, que se passerait-il pour ces fichiers? Comment pourraient-ils fusionner dans un seul dossier, voire pas du tout?
Lorsque vous déplacez l'application sur la carte SD (avec "Adoptable Storage Devices"), cela signifie-t-il qu'aucun stockage interne ne sera utilisé?
Laissez-moi répondre Périphériques de stockage pouvant être adoptés questions connexes:
- Supposons que l'utilisateur ait choisi d'utiliser "Périphériques de stockage pouvant être adoptés", que signifie-t-il pour les différentes fonctions qui extraient les chemins de les fichiers de l'application? Par exemple: getFilesDir, getExternalFilesDir, ...? La commande de getExternalFilesDirs changerait-elle à cause de cela?
Lorsque l’utilisateur choisit d’utiliser la carte SD en tant que "Périphérique de stockage pouvant être adopté" (Format interne), cela signifie que la carte SD est uniquement disponible en tant que stockage interne, c’est-à-dire qu’aucune carte SD n'est disponible pour stocker les fichiers téléchargés. Il n'y aura pas de changement d'ordre dans les chemins renvoyés par les méthodes associées. Par exemple: getExternalFilesDir () listera uniquement le chemin de stockage externe si l'utilisateur a formaté sa carte SD en tant que "Périphériques de stockage à adopter". Le chemin de la carte SD ne sera pas disponible.
- Qu'advient-il des fichiers de l'application lorsque l'utilisateur déplace l'application de/vers la carte SD (à l'aide de "Adoptable Storage Devices")? Quoi sur les fichiers de l'application sur la carte SD? Resteraient-ils? Ou seraient-ils déménager quelque part? Par exemple, si l'application a "file1.txt" sur le fichier Carte SD, sur le chemin "/ storage/extSdCard/Android/data/appPackageName", et il a un fichier "file2.txt" (ou même le même nom) sur le primaire stockage externe sur le chemin "/ stockage/émulé/0/Android/data/appPackageName". Après la commutation, qu'arriverait-il pour ces fichiers? Comment se fondraient-ils en un seul dossier, le cas échéant?
Chaque fois que l'utilisateur choisit sa carte SD comme "Périphériques de stockage adoptables", il doit alors formater sa carte SD en tant que stockage interne à l'aide de "Formater en interne" option. Format signifie que toutes les données/fichiers stockés sur la carte SD seront effacés. De même, lorsque l'utilisateur souhaite retirer sa carte SD de "Adoptable Storage Devices", il doit à nouveau formater sa carte SD en tant que stockage portable à l'aide de "Formater en tant que portable" option.
- Lorsque vous déplacez l'application sur la carte SD (avec "Adoptable Storage Devices"), cela signifie-t-il qu'aucun stockage interne ne sera utilisé?
Oui, la mémoire interne d'origine ne sera pas utilisée. Seul le stockage sur carte SD sera utilisé car après avoir choisi la carte SD comme "Périphériques de stockage pouvant être adoptés". Toutes les données/cache seront stockés sur la carte SD
Pour répondre à votre question 5: sous Android 7, tous les fichiers de la zone "données publiques", /storage/emulated/0/
(ou un emplacement spécifique du fabricant; c’est le répertoire contenant DCIM
Downloads
, etc.), sont stockés entièrement dans la mémoire interne ou entièrement. sur la carte SD adoptée. Après le format initial d'une carte SD adoptée, l'utilisateur se verra offrir la possibilité de "migrer des données", qui déplacera l'ensemble du /storage/emulated/0
sur la carte SD. À tout moment, l'utilisateur peut également accéder à Paramètres/Stockage , choisir la zone de stockage qui ne contient pas actuellement la zone de données publique, puis cliquer sur l'icône ⋮
(trois points verticaux) dans le coin supérieur droit pour afficher un menu avec l'option "Migrer les données".
Il semble qu’aucun utilisateur ni aucune application ne puisse forcer un fichier public particulier sur la carte SD si une carte adoptée est en cours d’utilisation; c'est tout ou rien. (Le stockage privé de l'application se trouvera dans la mémoire interne ou sur la carte SD, que l'application ait été déplacée ou non sur la carte SD. Là aussi, il apparaît que l'application n'utilisera jamais que l'un ou l'autre, pas les deux. .)