Android Utilisation du stockage externe


Exemple

Le stockage "externe" est un autre type de stockage que nous pouvons utiliser pour enregistrer des fichiers sur le périphérique de l'utilisateur. Il présente certaines différences clés par rapport au stockage "interne", à savoir:

  • Il n'est pas toujours disponible. Dans le cas d'un support amovible (carte SD), l'utilisateur peut simplement supprimer le stockage.
  • Ce n'est pas privé. L'utilisateur (et les autres applications) ont accès à ces fichiers.
  • Si l'utilisateur désinstalle l'application, les fichiers que vous enregistrez dans le répertoire extrait avec getExternalFilesDir() seront supprimés.

Pour utiliser le stockage externe, vous devez d'abord obtenir les autorisations appropriées. Vous devrez utiliser:

Pour accorder ces autorisations, vous devrez les identifier dans votre AndroidManifest.xml tant que tel.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

REMARQUE: Étant donné qu'il s'agit d' autorisations dangereuses si vous utilisez l' API niveau 23 ou supérieur, vous devrez demander les autorisations à l'exécution .

Avant d'essayer d'écrire ou de lire à partir du stockage externe, vous devez toujours vérifier que le support de stockage est disponible.

String state = Environment.getExternalStorageState();
if (state.equals(Environment.MEDIA_MOUNTED)) {
    // Available to read and write
}
if (state.equals(Environment.MEDIA_MOUNTED) || 
        state.equals(Environment.MEDIA_MOUNTED_READ_ONLY)) {
    // Available to at least read
}

Lorsque vous écrivez des fichiers sur le stockage externe, vous devez décider si le fichier doit être reconnu comme public ou privé. Bien que ces deux types de fichiers soient toujours accessibles à l'utilisateur et à d'autres applications sur le périphérique, il existe une distinction essentielle entre eux.

Les fichiers publics doivent rester sur le périphérique lorsque l'utilisateur désinstalle l'application. Un exemple de fichier devant être enregistré en tant que public serait les photos prises via votre application.

Les fichiers privés doivent tous être supprimés lorsque l'utilisateur désinstalle l'application. Ces types de fichiers seraient spécifiques à l'application et ne seraient pas utiles à l'utilisateur ou à d'autres applications. Ex. fichiers temporaires téléchargés / utilisés par votre application.

Voici comment accéder au répertoire Documents pour les fichiers publics et privés.

Publique

// Access your app's directory in the device's Public documents directory
File docs = new File(Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_DOCUMENTS), "YourAppDirectory");
// Make the directory if it does not yet exist
myDocs.mkdirs();

Privé

// Access your app's Private documents directory
File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS), 
        "YourAppDirectory");
// Make the directory if it does not yet exist
myDocs.mkdirs();