Stockage externe Android : ce que c’est, types de supports et comment travailler en développement

Auteur : IT Sectr Publié le : 2026-03-13 Temps de lecture : 11 min

Le stockage externe sur les appareils mobiles est un support de données amovible auquel toute application disposant des autorisations appropriées peut accéder. Selon le Android Open Source Project, 2026, à partir d’Android 10, Google a introduit Scoped Storage — un modèle qui restreint l’accès direct au système de fichiers et nécessite l’utilisation de l’API MediaStore pour travailler avec des fichiers multimédias partagés. Cette approche renforce la sécurité des données utilisateur et empêche les fuites d’informations entre les applications.

Points clés

  • External Storage — stockage amovible (carte SD, USB-OTG) disponible en lecture et écriture par différentes applications
  • Scoped Storage sur Android 10+ restreint l’accès direct au système de fichiers et le remplace par l’API MediaStore
  • iOS ne prend pas en charge les cartes SD — l’accès aux fichiers externes se fait via Document Picker
  • Autorisations READ_EXTERNAL_STORAGE et WRITE_EXTERNAL_STORAGE sont obligatoires pour Android 9 et versions antérieures
  • Le formatage d’une carte SD en stockage interne ou portable détermine le modèle d’accès et de chiffrement

Qu’est-ce que le stockage externe sur les appareils mobiles ?

Le stockage externe est une zone mémoire qui ne fait pas partie du sandbox protégé de l’application et qui est accessible aux autres programmes. Sur Android, ce terme désigne généralement la carte SD, mais le stockage externe inclut également les lecteurs USB connectés via un adaptateur OTG et les lecteurs cloud intégrés au niveau du système de fichiers. La principale différence avec le stockage interne est l’absence d’isolation : toute application disposant des autorisations appropriées peut lire et modifier les fichiers dans le stockage externe.

Sur Android, le stockage externe se présente sous deux modes principaux : portable et adoptable. Lorsqu’une carte SD est formatée en stockage portable, elle reste amovible et est formatée en FAT32 ou exFAT. En mode de stockage adoptable, la carte est formatée en ext4 et chiffrée avec AES-128, après quoi le système la traite comme une extension de la mémoire interne. Le mode adoptable est disponible depuis Android 6.0 Marshmallow, mais les fabricants d’appareils désactivent souvent cette fonction dans leur firmware. Selon les statistiques de Google Play Console, seulement environ 12 % des appareils Android prennent en charge le stockage adoptable, il n’est donc pas recommandé de compter sur l’extension de la mémoire interne via une carte SD comme seule option.

Sur iOS, il n’y a pas de cartes SD traditionnelles. Apple utilise une architecture fermée où tout le stockage repose sur la mémoire flash interne et iCloud. Les lecteurs externes sont pris en charge via le port Lightning ou USB-C, mais leur accès est limité au gestionnaire de fichiers système Files et aux applications qui s’intègrent à Document Picker. L’utilisateur décide quels fichiers ouvrir à partir d’une source externe — l’application ne peut pas analyser un lecteur connecté sans consentement explicite.

Types de supports externes et leurs caractéristiques

Le choix du support externe dépend des exigences de vitesse, de capacité et de portabilité. Différents types de supports ont des caractéristiques de vitesse, des systèmes de fichiers et des cas d’utilisation variés dans les applications mobiles.

Type de supportCapacité maxVitesse de lectureSystème de fichiers
SD UHS-I2 Tojusqu’à 104 Mo/sexFAT / FAT32
SD UHS-II2 Tojusqu’à 312 Mo/sexFAT / FAT32
USB 3.0 OTG2 Tojusqu’à 400 Mo/sexFAT / NTFS / FAT32
USB-C SSD4 Tojusqu’à 1000 Mo/sexFAT / APFS / NTFS

Cartes SD et classes de vitesse

Les cartes SD sont classées par vitesse d’écriture : Classe 10 (10 Mo/s), U1 (10 Mo/s), U3 (30 Mo/s), V30 (30 Mo/s) et V90 (90 Mo/s). L’enregistrement vidéo 4K nécessite une carte d’au moins U3 ou V30. Pour les applications mobiles travaillant avec de gros fichiers multimédias (traitement photo, montage vidéo), il est recommandé d’utiliser des cartes de classe U3 et supérieures. La vitesse de la carte affecte directement les performances de l’application : l’enregistrement vidéo 4K sur une carte Classe 10 peut provoquer des chutes d’images en raison d’une bande passante insuffisante. Lors du choix d’une carte SD pour une application, faites attention non seulement à la classe de vitesse, mais aussi à la classification de Classe de Performance d’Application : A1 et A2 indiquent les performances minimales de lecture et d’écriture aléatoires, critiques pour les opérations de base de données et de cache d’application.

Lecteurs USB-OTG

USB-OTG (On-The-Go) permet de connecter des lecteurs USB externes à un appareil mobile via un adaptateur. Android prend en charge OTG depuis la version 3.1, mais le montage du lecteur nécessite un noyau avec prise en charge du système de fichiers. FAT32 et exFAT sont pris en charge nativement, NTFS — uniquement sur les appareils avec noyau personnalisé ou via la bibliothèque Paragon. Sur iOS, la prise en charge des lecteurs USB est apparue dans iOS 13 avec l’application Files. Pour travailler avec un lecteur, l’application doit utiliser UIDocumentPickerViewController, qui fournit un accès uniquement aux fichiers sélectionnés par l’utilisateur — iOS n’accorde pas un accès complet au système de fichiers du lecteur.

Stockage cloud comme extension

Les services cloud — iCloud, Google Drive, Dropbox — peuvent s’intégrer au système de fichiers de l’appareil via des fournisseurs système. Sur iOS, iCloud Drive fait partie du conteneur Sandbox de l’application et les fichiers sont automatiquement synchronisés entre les appareils de l’utilisateur. Sur Android, Google Drive fournit une API pour lire et écrire des fichiers, mais aucun montage direct dans le système de fichiers ne se produit. Pour les applications mobiles travaillant avec de grands volumes de données, le stockage cloud peut servir d’alternative à la carte SD, en particulier sur les appareils sans emplacement d’extension.

Comment travailler avec le stockage externe sur Android

Travailler avec le stockage externe sur Android dépend de la version du système d’exploitation et du modèle Scoped Storage. Le processus d’accès aux fichiers diffère pour Android 9 et versions antérieures, Android 10–12 et Android 13+.

Accès via l’API MediaStore

À partir d’Android 10, la principale méthode d’accès aux fichiers multimédias partagés est l’API MediaStore. Cette API fournit une interface unifiée pour lire et écrire des images, des vidéos et des fichiers audio dans le stockage partagé. Une application ne nécessite pas l’autorisation READ_EXTERNAL_STORAGE pour accéder à ses propres fichiers, mais la lecture des fichiers d’autres applications nécessite toujours une autorisation explicite de l’utilisateur. MediaStore indexe automatiquement les fichiers multimédias et fournit un ContentResolver pour les interroger.

kotlin
val collection = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY)
} else {
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI
}

val projection = arrayOf(
    MediaStore.Images.Media._ID,
    MediaStore.Images.Media.DISPLAY_NAME
)

val cursor = contentResolver.query(collection, projection, null, null, null)

Après avoir exécuté la requête, vous recevez un Cursor contenant les URI des fichiers. Pour lire un fichier, ouvrez un InputStream via contentResolver.openInputStream(uri). L’écriture s’effectue de manière similaire via contentResolver.openOutputStream(uri). MediaStore gère automatiquement les conflits de noms et offre la possibilité d’insérer de nouveaux fichiers via contentResolver.insert(uri, values), qui retourne l’URI du fichier créé.

Travail avec des fichiers arbitraires via SAF

Storage Access Framework (SAF) est la méthode recommandée pour accéder à des fichiers arbitraires sur Android 10+. SAF fournit une boîte de dialogue de sélection de fichiers système par laquelle l’utilisateur accorde à l’application l’accès à un fichier ou un répertoire spécifique. L’application reçoit un URI d’accès qui reste valide jusqu’au redémarrage de l’appareil ou jusqu’à ce que l’autorisation soit révoquée explicitement dans les paramètres. SAF ne nécessite pas les autorisations READ_EXTERNAL_STORAGE ou WRITE_EXTERNAL_STORAGE, ce qui simplifie la publication sur Google Play et réduit le nombre de demandes d’autorisation.

kotlin
val requestCode = 42
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
intent.addFlags(
    Intent.FLAG_GRANT_READ_URI_PERMISSION
        or Intent.FLAG_GRANT_WRITE_URI_PERMISSION
)
startActivityForResult(intent, requestCode)

Comment travailler avec le stockage externe sur iOS

Sur iOS, le travail avec les fichiers externes est construit autour d’UIDocumentPickerViewController, que l’utilisateur ouvre pour sélectionner des fichiers ou des répertoires spécifiques. L’application n’a pas d’accès direct au système de fichiers du lecteur externe — seulement aux fichiers que l’utilisateur a explicitement sélectionnés. Après la sélection du fichier, l’application reçoit une URL temporaire dans le conteneur Sandbox et peut travailler avec le fichier via FileManager.

Utilisation d’UIDocumentPickerViewController

UIDocumentPickerViewController permet à l’utilisateur de sélectionner un ou plusieurs fichiers à partir de n’importe quelle source disponible : iCloud Drive, un lecteur USB connecté ou un service cloud tiers. Après la sélection, le contrôleur retourne un tableau d’URL que l’application peut lire pendant la session. Pour conserver l’accès après la fermeture de l’application, vous devez appeler startAccessingSecurityScopedResource() et enregistrer un signet à portée de sécurité dans UserDefaults.

swift
let picker = UIDocumentPickerViewController(
    forOpeningContentTypes: [.data, .image],
    asCopy: true
)
picker.delegate = self

func documentPicker(
    controller: UIDocumentPickerViewController,
    didPickDocumentsAt urls: [URL]
) {
    guard let url = urls.first else { return }
    let data = try Data(contentsOf: url)
}

Le paramètre asCopy: true signifie qu’iOS copiera le fichier dans le conteneur Sandbox de l’application, et l’application obtiendra sa propre copie indépendante du fichier original. Si asCopy: false est spécifié, l’application reçoit une référence au fichier original, mais pour y accéder, vous devez appeler url.startAccessingSecurityScopedResource(). Sans cet appel, la lecture du fichier génère une exception. Après avoir terminé le travail avec le fichier, appelez toujours url.stopAccessingSecurityScopedResource() pour libérer la ressource et éviter les fuites de descripteurs.

Limites et sécurité du stockage externe

La sécurité du stockage externe est inférieure à celle du stockage interne car les fichiers sont accessibles aux autres applications. Toute application disposant de l’autorisation READ_EXTERNAL_STORAGE peut lire tous les fichiers sur la carte SD, y compris ceux que votre application a créés pour stocker temporairement des données confidentielles. Une application malveillante pourrait analyser la carte SD et extraire les données utilisateur si elles ne sont pas chiffrées. Par conséquent, il est fortement déconseillé de stocker les jetons d’authentification, les mots de passe ou les données personnelles de l’utilisateur dans le stockage externe en texte clair.

Sur Android 10+, Scoped Storage limite considérablement la capacité des applications à accéder au système de fichiers partagé. Une application ne peut lire sans autorisation que les fichiers qu’elle a elle-même créés, et l’accès aux fichiers d’autres applications nécessite le consentement explicite de l’utilisateur via la boîte de dialogue SAF. Cependant, cette restriction ne s’applique pas aux applications avec une version SDK cible inférieure à 29 — elles continuent de fonctionner selon l’ancien modèle, créant un risque pour les utilisateurs qui n’ont pas mis à jour leurs applications. Google Play exige targetSdkVersion 29+ pour toutes les nouvelles applications et mises à jour depuis 2021.

Le formatage et le chiffrement constituent un autre aspect important de la sécurité. Une carte SD formatée en stockage portable n’est pas chiffrée par le système par défaut. Même lors de l’utilisation du stockage adoptable, le chiffrement n’est activé que si le fabricant de l’appareil a activé cette fonction dans le firmware. Pour protéger les données confidentielles sauvegardées sur le stockage externe, utilisez la bibliothèque EncryptedFile d’AndroidX Security, qui chiffre chaque fichier séparément avec AES256-GCM, indépendamment du chiffrement système.

Recommandations pour l’utilisation du stockage externe

L’utilisation efficace du stockage externe nécessite un équilibre entre la disponibilité des données et la sécurité. Suivez ces règles pour garantir un stockage fiable des fichiers utilisateur.

  • Ne stockez pas de données confidentielles dans le stockage externe sans chiffrement. Utilisez EncryptedFile ou EncryptedSharedPreferences pour protéger les jetons, mots de passe et données personnelles
  • Vérifiez la disponibilité du stockage externe avant d’écrire : utilisez Environment.getExternalStorageState() pour vérifier l’état de la carte SD. La carte peut être retirée, endommagée ou indisponible en écriture
  • Utilisez Scoped Storage sur Android 10+ et SAF pour accéder aux fichiers partagés. Cela réduit le nombre d’autorisations demandées et améliore l’expérience utilisateur
  • Gérez toujours les exceptions lors du travail avec le stockage externe. Un fichier peut être supprimé par une autre application ou déplacé pendant la lecture, provoquant une FileNotFoundException
  • Avertissez l’utilisateur avant d’écrire de grandes quantités de données sur le stockage externe. Affichez une boîte de dialogue de confirmation et permettez de choisir un répertoire via SAF

Il est important de se rappeler que le stockage externe ne garantit pas l’intégrité des données en cas de panne. Les cartes SD ont un nombre limité de cycles de réécriture, en particulier les modèles bon marché de Classe 4 et Classe 6. Avec une écriture intensive (par exemple, la journalisation ou la mise en cache de données en streaming), une carte peut tomber en panne en quelques mois. Pour de tels scénarios, utilisez la mémoire interne ou le stockage cloud, et sauvegardez sur le stockage externe uniquement les fichiers dont la perte serait acceptable pour l’utilisateur. Vérifiez régulièrement l’état de la carte SD via StatFs et informez l’utilisateur des erreurs critiques du système de fichiers.

Foire aux questions

Une autorisation est-elle nécessaire pour accéder au stockage externe sur Android 13 ?

Sur Android 13+, l’autorisation READ_EXTERNAL_STORAGE a été remplacée par des autorisations plus granulaires : READ_MEDIA_IMAGES, READ_MEDIA_VIDEO et READ_MEDIA_AUDIO. Pour les autres types de fichiers, utilisez SAF.

Peut-on formater une carte SD comme mémoire interne ?

Oui, la fonction adoptable storage est disponible sur Android 6.0+. La carte est formatée en ext4 avec chiffrement AES-128. Cependant, de nombreux fabricants désactivent cette option, et environ 88 % des appareils ne prennent pas en charge le stockage adoptable.

Comment vérifier si une carte SD est installée dans l’appareil ?

Utilisez la méthode Environment.getExternalStorageState() qui retourne une chaîne d’état. La valeur MEDIA_MOUNTED signifie que la carte est disponible en lecture et écriture. Les autres valeurs indiquent des erreurs ou l’absence de carte.

Quelle est la différence entre Scoped Storage et l’accès complet au système de fichiers ?

Scoped Storage restreint l’application à son propre conteneur et aux galeries multimédias partagées MediaStore. L’accès complet permet de lire tous les fichiers sur l’appareil. Scoped Storage améliore la sécurité des données utilisateur et est obligatoire pour les nouvelles applications.

Comment obtenir un URI pour accéder à un fichier sur une carte SD via SAF ?

Lancez un Intent avec l’action ACTION_OPEN_DOCUMENT_TREE, qui ouvre une boîte de dialogue de sélection de répertoire système. Après la sélection, vous recevez une autorisation URI valide jusqu’au redémarrage. Sauvegardez cet URI dans SharedPreferences pour une utilisation ultérieure.

Résumé

  • External Storage — stockage amovible (carte SD, USB-OTG) accessible à toutes les applications avec les autorisations appropriées
  • Scoped Storage sur Android 10+ restreint l’accès direct au système de fichiers et introduit l’API MediaStore pour les fichiers multimédias
  • iOS ne prend pas en charge les cartes SD — l’accès aux fichiers externes est disponible uniquement via UIDocumentPickerViewController
  • Les cartes SD sont divisées en classes de vitesse : Classe 10, U1, U3, V30, V90 — U3 minimum est requis pour l’enregistrement vidéo 4K
  • La sécurité du stockage externe est inférieure à celle du stockage interne — chiffrez les données confidentielles avant l’écriture
  • Le stockage adoptable permet d’utiliser une carte SD comme extension de la mémoire interne, mais n’est pris en charge que sur 12 % des appareils
  • Il est recommandé d’utiliser SAF pour accéder aux fichiers arbitraires et de ne pas stocker de données critiques sans chiffrement

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi