Problématique :
Certaines applications Android nécessite de persister des données en local.C’est le cas par exemple de la couleur préférée de l’utilisateur, ses paramètres, des fichiers téléchargés sur internet ou chargé depuis son téléphone. Nous allons explorer dans ce qui suit, les différentes alternatives offertes par l’écosystème Android.
Pré requis
- Etre débutant ou developpeur professionnel d’application android;
- Utliser android Studio comme IDE(Environnement de Developpement Intégré);
- Connaitre java.
Le stockage de données en local
Pour stocker les données en local Android nous fournit plusieurs possiblités à savoir :
- les données partagées (Shared Preferences),
- le stockage interne (Internal Storage) ,
- le stockage externe (External Storage),
- les bases de données locales :
- Celle proposée par Android (SQLite),
- Et les autres (Realm ..).
Dans la première partie de cet article nous parlererons des Shared Preferences, de l’Internal Storage et de l’External Storage.
Shared Preferences
Les Shared Preferences permettent de stocker des données par clé-valeur par l’intermédiaire de la Classe sharedPreferences. L’avantage réel d’utiliser les Shared Preferences est que les données stockées sont conservées même quand l’application est arrêtée ou tuée.
Comment utiliser les Shared Preferences?
Pour avoir accès au Shared Preferences nous avons principalement deux méthodes:
- getPreferences(int mode)
Utiliser ceci quand vous voulez utiliser un seul fichier pour stocker vos préférences.
- getSharedPreferences(String filename,int mode)
Utiliser ceci quand vous voulez utliser plusieurs fichiers pour stocker vos préférences.
Que signifie le paramètre (int mode)?
Cela correspond au mode d’accès des fichiers de sharedPreferences créés. Ainsi nous avons les modes:
- MODE_PRIVATE, pour que le fichier créé ne soit accessible que par l’application qui l’a créé.
- MODE_WORLD_READABLE, pour que le fichier créé puisse être lu par n’importe quelle application.
- MODE_WORLD_WRITEABLE, pour que le fichier créé puisse être lu et modifié par n’importe quelle application.
Comment enrégistrer les données dans les SharedPreferences ?
Comment récupérer les données des SharedPreferences ?
Récupérons le String enrégistré précedemment.
Avec DefaultValue une valeur par défaut qu’il faut spécifier au cas où la valeur recherchée n’ait pas été trouvée.
NB: les Shared Preferences ne fonctionnent qu’avec les objets de type boolean, float, int, long et String.
Un cas pratique est disponible sur mon compte github via ce lien.
Le stockage interne (Internal Storage)
Pour stocker des données (fichiers) on peut aussi utiliser le stockage interne de notre téléphone. Par défaut les fichiers sauvegardés dans le stockage interne sont privés à l’application. Quand l’utilisateur désinstalle l’application, les fichiers sont automatiquement supprimés.
Comment sauvegarder un fichier dans le stockage interne ?
Pour créer et écrire dans un fichier privé en stockage interne il faut:
- Appeler openFileOutput(String fileName,int mode) avec fileName le nom du fichier et mode le mode d’accès : décrit un peu plus haut;
- Utiliser write() pour écrire dans le fichier;
- Fermer le flux d’écriture avec close().
Voici un exemple qui montre comment créer et sauvegarder un fichier contenant une chaine de caractère
Comment lire les données contenu dans un fichier sauvegarder en interne ?
Pour lire le contenu d’un fichier interne il faut:
- Appeler openFileInput(String fileName) avec fileName le nom du fichier à récupérer;
- Utiliser read() pour lire les bytes à partir du fichier;
- Fermer le flux d’écriture avec close().
Voici un exemple qui montre la lecture du fichier créé précédemment
Le stockage Externe (External Storage)
Chaque appareil Android prend en charge un stockage externe que nous pouvons utiliser pour stocker des données. Mais le problème avec le stockage externe est que l’utilisateur a accès au fichier et peut donc les déplacer ou les supprimer quand il veut. Par contre on a une grande capacité de stockage. Le stockage externe peut être une carte SD ou une partie du stockage interne dédiée pour cela.
Comment utliser le stockage externe ?
Pour lire ou écrire des fichiers dans le stockage externe l’application doit:
- déclarer les permissions READ_EXTERNAL_STORAGE ou WRITE_EXTERNAL_STORAGE dans le fichier manifest :
ou
- Vérifier la disponibilité du stockage grâce à getExternalStorageState();
- Sauvegarder ou récupérer des fichiers
Pour lire ou écrire des fichiers dans le stockage externe l’application doit: Voici un exemple qui montre comment créer et sauvegarder un fichier contenant une chaine de caractère dans le dossier download de votre téléphone
Lecture du fichier créé :
Conclusion
Android nous offre différentes possibilités pour stocker nos fichiers en local. Dans la première partie de cet article on a parlé des Shared Preferences, du stockage interne et du stockage externe. On a donc remarqué que les Shared Preferences sont souvent utilisés pour stocker des paramètres utilisateur comme le thème et autre; le stockage interne pour sauvegarder des données auxquelles l’utilisateur n’aura pas accès et le stockage externe pour sauvegarder les fichiers un peu plus volumineux comme le son, les images, la vidéo.
Rendez-vous dans la deuxième partie de cet article pour parler de SQLite et de Realm Database.
- android (4) ,
- java (7) ,
- realm (1) ,
- sharedPreferences (1) ,
- Storage (1) ,
- Internal Storage (1) ,
- External Storage (1) ,
- database (1) ,
- SQLite (1)