SlideShare une entreprise Scribd logo
Institut National des Sciences Appliquées et de Technologie Tunisie
Développement Android
2015-2016
TP4- STOCKAGE
Dr. Lilia SFAXI
Objectifs du TP : Familiariser les étudiants avec les différentes techniques de
stockage dans Android : Shared Preferences, Fichiers et base SQLite.
TP4 : Stockage
Page 2
I. Stockage dans Android
Il existe plusieurs options de stockage des données persistantes dans Android. Le choix de la
solution idéale dépendra des besoins spécifiques des utilisateurs :
• Les données sont-elles privées ou accessibles à d’autres applications ?
• Combien d’espace disponible est-il requis ?
• Les données doivent-elles être structurées, semi-structurées ou pas structurées ?
Les options de stockage que nous allons montrer dans ce TP sont les suivantes :
1. Shared Preferences :
Framework général qui permet de sauvegarder et extraire des paires clef-valeur persistantes de
type primitif. Il permet de stocker des données de types booléen, réel, entier, long et string.
Typiquement, les Shared Preferences sont utilisées pour sauvegarder les préférences utilisateur,
tel que la sonnerie choisie, par exemple.
2. Stockage interne
Il possible d’utiliser le stockage interne du téléphone pour sauvegarder des fichiers. Par défaut, ces
fichiers sont privés (inaccessibles à partir d’autres applications). Quand l’application est
supprimés, ces fichiers le sont aussi.
3. Stockage externe
Tous les appareils compatibles Android supportent un espace de stockage externe, qui peut être
une SD card, ou un espace interne non-amovible.
Les fichiers sauvegardés dans un espace de stockage externe sont accessibles à toutes les
applications en lecture.
Ils peuvent être modifiés par l’utilisateur si le « USB mass storage » est activé pour transférer les
fichiers sur un ordinateur.
4. Base de données SQLite
Android fournit un support total du SGBD SQLite. SQLite est une bibliothèque logicielle qui
implémente un moteur de base de données SQL avec zéro-configuration, léger et sans
dépendances externes.
TP4 : Stockage
Page 3
Toutes les bases de données créées dans une application seront accessibles par nom depuis tout
emplacement de cette application, mais pas de l’extérieur.
La méthode recommandée pour la création d’une base de données SQLite d’utiliser une sous-classe
de SQLiteOpenHelper, une classe d’assistance qui aide l’utilisateur à créer et manipuler sa base de
données de manière simple.
II. Exercice 1 : Shared Preferences
II.1 Objectif
Durée estimée de l’exercice : au plus 15mn
L’objectif de cette première partie est de réaliser une application simple pour stocker quelques
données dans les Shared Preferences. L’interface sera alors comme suit :
II.2 Réalisation
Pour lire un objet SharedPreferences, utiliser l’une de ces méthodes:
• getSharedPreferences: pour utiliser plusieurs fichiers de préférences identifiés par nom
TP4 : Stockage
Page 4
• getPreferences: pour utiliser un seul fichier de préférences, donc sans définir un nom de
fichier
Pour ajouter des valeurs :
• Appeler edit() pour obtenir un objet SharedPreferences.Editor
• Ajouter des valeurs avec des méthodes, tel que putBoolean() et putString()
• Valider les nouvelles valeurs avec commit()
Pour lire des valeurs, utiliser les méthodes de SharedPreferences tel que getBoolean() ou
getString()…
Le code obtenu devra ressembler à ce qui suit :
Activité 1. Créer un projet Android TP4-P1, permettant d’enregistrer et de lire des données dans les
Shared Preferences.
III. Exercice 2 : Support de stockage interne et externe
III.1 Objectif
Durée estimée de l’exercice : au plus 45mn
L’objectif de cette partie est de réaliser une application simple pour stocker quelques données
dans des fichiers internes et externes. L’interface sera alors comme suit :
TP4 : Stockage
Page 5
III.2 Stockage en interne
Pour lire et écrire dans un fichier interne à l’application, utiliser les primitives FileInputStream et
FileOutputStream fournies par Java. À l’écriture, il est impératif de spécifier un (ou plusieurs)
mode(s) opératoire(s). Ces modes peuvent être combinés en utilisant ||
• MODE_PRIVATE : Le fichier n’est accessible que par l’application qui l’a créé.
1 2
TP4 : Stockage
Page 6
• MODE_WORLD_READABLE : Le fichier est accessible en lecture par les autres applications.
• MODE_WORLD_WRITEABLE : Le fichier est accessible en écriture par les autres applications.
• MODE_APPEND : Si le fichier existe déjà, les données seront ajoutées à la fin
Voici des exemples pour lire et écrire dans un fichier interne.
Pour visualiser les fichiers de votre application, ouvrir le Android Device Monitor ( ) et choisir File
Explorer.
data/data/<app_name>/files
TP4 : Stockage
Page 7
III.3 Stockage en externe
Pour lire ou écrire des fichiers sur le stockage externe, l’application doit avoir les permissions
READ_EXTERNAL_STORAGE ou WRITE_EXTERNAL_STORAGE.
Avant de manipuler le support de stockage, il faut d’abord vérifier la disponibilité du support de
stockage grâce à la méthode getExternalStorageState.
Exemple d’écriture :
Exemple de lecture :
TP4 : Stockage
Page 8
Activité 2. Créer un projet Android TP4-P2, permettant de lire et d’écrire du texte à partir de fichiers
en interne et en externe.
IV. Exercice 3 : Base de Données SQLite
IV.1 Objectif
Durée estimée de l’exercice : au plus 1h
Réaliser une application simple permettant de manipuler des éléments dans une base de données.
Les opérations que vous allez implémenter sont : l’ajout, l’affichage et la suppression.
1 2
TP4 : Stockage
Page 9
IV.2 Création de la base
Pour manipuler une base de données SQLite, les étapes recommandées sont :
1. Créer une classe qui hérite de SQLiteOpenHelper
2. Créer des classes modèles représentant chacune des tables de la base
3. Créer la base de données et les tables nécessaires
4. Implémenter les méthodes suivantes :
a. Le constructeur
b. onCreate: contient les opérations réalisées à la création de la base de
données
c. onUpgrade: opérations réalisées quand la base fait un upgrade
L’implémentation de ces deux méthodes se fait toujours de la même manière :
Remarque
Pour implémenter les différents CRUD, il est fortement déconseillé de le faire dans cette même
classe, car cela risque de l’encombrer et de la rendre trop chargée et incompréhensible,
surtout si le nombre de tables augmente. Il faudrait alors créer des classes indépendantes
pour manipuler chacune de ces tables, et les appeler à partir de ce Helper.
TP4 : Stockage
Page 10
IV.3 Insertion
Pour insérer un élément dans une table de la base, utiliser l’objet ContentValues, qui va contenir,
pour chaque enregistrement, les valeurs des différentes colonnes.
ContentValues values = new ContentValues() ;
values.put(<column1_name>,<column1_value>) ;
values.put(<column2_name>,<column2_value>) ;
Une fois l’enregistrement créé, l’insérer dans la base en utilisant un objet (db) de type
SQLiteDatabase. Cet objet et obtenu en appelant this.getWritableDatabase() à partir de la classe
SQLiteOpenHelper.
db.insert(<table_name>,null,values) ;
Il ne faut jamais oublier de fermer la table une fois l’opération terminée.
db.close() ;
IV.4 Recherche
Pour chercher et afficher un élément d’une table
1. Créer une chaîne de caractères query contenant votre requête SELECT
2. Créer un curseur pour parcourir le résultat de la chaîne :
Cursor cursor = db.rawQuery(query, null) ;
3. Parcourir les éléments avec le curseur. Ne pas oublier de faire les cast nécessaires !
if (cursor.moveToFirst()){
cursor.moveToFirst() ;
int elem1 = Integer.parseInt(cursor.getString(0)) ;
String elem2 = cursor.getString(1) ;
…
cursor.close() ;
}
db.close() ;
TP4 : Stockage
Page 11
IV.5 Suppression
Pour supprimer un ou plusieurs éléments de la base :
1. Créer une chaîne de caractères query contenant votre requête SELECT
2. Créer un curseur pour parcourir les éléments de la requête
3. Utiliser la fonction suivante :
db.delete(<table_name>, <id_name> + " = ? ", <id_value>) ;
N’oubliez pas de ferme le curseur et la base !
V. Homework
Toute application consistante ne peut pas de contenter d’un stockage en interne dans le device. Il
faut donc penser à d’autres modes de stockage distants. L’un de ces modes de stockage est le
stockage dans une base de données hébergée sur le cloud.
Les systèmes Android fonctionnent parfaitement avec l’une de ces bases de données, Firebase.
Créer une base de données avec Firebase, et un client Android permettant d’afficher son contenu
dans des Cards (en utilisant le RecyclerView), de supprimer et d’ajouter de nouveaux éléments.
Remarquez la réactivité de ces opérations en lançant à la fois votre émulateur, un appareil Android
et un navigateur montrant le contenu de la base.
Activer également la fonction permettant de manipuler les éléments de la base en Offline.

Contenu connexe

Tendances

Chp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileChp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement Mobile
Lilia Sfaxi
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à android
Lilia Sfaxi
 
Chp5 - Applications Android
Chp5 - Applications AndroidChp5 - Applications Android
Chp5 - Applications Android
Lilia Sfaxi
 
Modélisation de données pour MongoDB
Modélisation de données pour MongoDBModélisation de données pour MongoDB
Modélisation de données pour MongoDB
MongoDB
 
P2 éléments graphiques android
P2 éléments graphiques androidP2 éléments graphiques android
P2 éléments graphiques android
Lilia Sfaxi
 
Applications Android - cours 12 : Persistance de données SQLite
Applications Android - cours 12 : Persistance de données SQLiteApplications Android - cours 12 : Persistance de données SQLite
Applications Android - cours 12 : Persistance de données SQLite
Ahmed-Chawki Chaouche
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications Mobiles
Lilia Sfaxi
 
Cours architecture
Cours architectureCours architecture
Cours architecture
Abdelaziz Elbaze
 
Chp3 - Les Services Web
Chp3 - Les Services WebChp3 - Les Services Web
Chp3 - Les Services Web
Lilia Sfaxi
 
Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)
Ahmed-Chawki Chaouche
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intents
Lilia Sfaxi
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHP
Kristen Le Liboux
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
ENSET, Université Hassan II Casablanca
 
Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2
Faycel Chaoua
 
Cours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 compositeCours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 composite
ENSET, Université Hassan II Casablanca
 
Cours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateurCours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateur
ENSET, Université Hassan II Casablanca
 
T1 corrections-qcm
T1 corrections-qcmT1 corrections-qcm
T1 corrections-qcminfcom
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introduction
neuros
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
ENSET, Université Hassan II Casablanca
 
Chp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesChp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications Mobiles
Lilia Sfaxi
 

Tendances (20)

Chp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileChp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement Mobile
 
P1 introduction à android
P1 introduction à androidP1 introduction à android
P1 introduction à android
 
Chp5 - Applications Android
Chp5 - Applications AndroidChp5 - Applications Android
Chp5 - Applications Android
 
Modélisation de données pour MongoDB
Modélisation de données pour MongoDBModélisation de données pour MongoDB
Modélisation de données pour MongoDB
 
P2 éléments graphiques android
P2 éléments graphiques androidP2 éléments graphiques android
P2 éléments graphiques android
 
Applications Android - cours 12 : Persistance de données SQLite
Applications Android - cours 12 : Persistance de données SQLiteApplications Android - cours 12 : Persistance de données SQLite
Applications Android - cours 12 : Persistance de données SQLite
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications Mobiles
 
Cours architecture
Cours architectureCours architecture
Cours architecture
 
Chp3 - Les Services Web
Chp3 - Les Services WebChp3 - Les Services Web
Chp3 - Les Services Web
 
Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intents
 
Un exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHPUn exemple élémentaire d'application MVC en PHP
Un exemple élémentaire d'application MVC en PHP
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2
 
Cours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 compositeCours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 composite
 
Cours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateurCours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateur
 
T1 corrections-qcm
T1 corrections-qcmT1 corrections-qcm
T1 corrections-qcm
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introduction
 
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce  Basé sur Spring IOC MVC Security JPA HibernateSite JEE de ECommerce  Basé sur Spring IOC MVC Security JPA Hibernate
Site JEE de ECommerce Basé sur Spring IOC MVC Security JPA Hibernate
 
Chp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesChp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications Mobiles
 

Similaire à Android-Tp4: stockage

PHP_partie_.ppt,php_cours_mathematiques_informatiques
PHP_partie_.ppt,php_cours_mathematiques_informatiquesPHP_partie_.ppt,php_cours_mathematiques_informatiques
PHP_partie_.ppt,php_cours_mathematiques_informatiques
oumaimanouari
 
Outils front-end
Outils front-endOutils front-end
Outils front-end
Thomas Bodin
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
Atsé François-Xavier KOBON
 
cours-android.pdf
cours-android.pdfcours-android.pdf
cours-android.pdf
med_univ78
 
Bases de données sous Android.pdf
Bases de données sous Android.pdfBases de données sous Android.pdf
Bases de données sous Android.pdf
RihabBENLAMINE
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
JEAN-GUILLAUME DUJARDIN
 
Framework Hibernate
Framework HibernateFramework Hibernate
Framework Hibernate
Ines Ouaz
 
Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Farouk Mezghich
 
Android
AndroidAndroid
Android
Redha LOUCIF
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
Noel GUILBERT
 
3-android.pdf
3-android.pdf3-android.pdf
3-android.pdf
FethiBenYahia1
 
DEVASC_Module_7 - Infrastructure & automatisation.pptx
DEVASC_Module_7 - Infrastructure & automatisation.pptxDEVASC_Module_7 - Infrastructure & automatisation.pptx
DEVASC_Module_7 - Infrastructure & automatisation.pptx
TasnimBenAmmar
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
badrfathallah2
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
seydou4devops
 
Introduction aspnet
Introduction aspnetIntroduction aspnet
Introduction aspnet
abdellatif edkhaili
 
Km622 g formation-ibm-infosphere-metadata-workbench-essentials-v9-1
Km622 g formation-ibm-infosphere-metadata-workbench-essentials-v9-1Km622 g formation-ibm-infosphere-metadata-workbench-essentials-v9-1
Km622 g formation-ibm-infosphere-metadata-workbench-essentials-v9-1CERTyou Formation
 
DART.pptx
DART.pptxDART.pptx
DART.pptx
IdrissaDembl
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
Alexandre Marie
 
Hibernate
HibernateHibernate
Hibernate
Ghazouani Mahdi
 
Cours access
Cours accessCours access
Cours accesskourbali
 

Similaire à Android-Tp4: stockage (20)

PHP_partie_.ppt,php_cours_mathematiques_informatiques
PHP_partie_.ppt,php_cours_mathematiques_informatiquesPHP_partie_.ppt,php_cours_mathematiques_informatiques
PHP_partie_.ppt,php_cours_mathematiques_informatiques
 
Outils front-end
Outils front-endOutils front-end
Outils front-end
 
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
#J2Code2018 - Mettez du feu à vos applications avec CodeIgniter
 
cours-android.pdf
cours-android.pdfcours-android.pdf
cours-android.pdf
 
Bases de données sous Android.pdf
Bases de données sous Android.pdfBases de données sous Android.pdf
Bases de données sous Android.pdf
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
 
Framework Hibernate
Framework HibernateFramework Hibernate
Framework Hibernate
 
Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)
 
Android
AndroidAndroid
Android
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 
3-android.pdf
3-android.pdf3-android.pdf
3-android.pdf
 
DEVASC_Module_7 - Infrastructure & automatisation.pptx
DEVASC_Module_7 - Infrastructure & automatisation.pptxDEVASC_Module_7 - Infrastructure & automatisation.pptx
DEVASC_Module_7 - Infrastructure & automatisation.pptx
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
Introduction aspnet
Introduction aspnetIntroduction aspnet
Introduction aspnet
 
Km622 g formation-ibm-infosphere-metadata-workbench-essentials-v9-1
Km622 g formation-ibm-infosphere-metadata-workbench-essentials-v9-1Km622 g formation-ibm-infosphere-metadata-workbench-essentials-v9-1
Km622 g formation-ibm-infosphere-metadata-workbench-essentials-v9-1
 
DART.pptx
DART.pptxDART.pptx
DART.pptx
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
 
Hibernate
HibernateHibernate
Hibernate
 
Cours access
Cours accessCours access
Cours access
 

Plus de Lilia Sfaxi

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdf
Lilia Sfaxi
 
Plan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfPlan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdf
Lilia Sfaxi
 
Lab3-DB_Neo4j
Lab3-DB_Neo4jLab3-DB_Neo4j
Lab3-DB_Neo4j
Lilia Sfaxi
 
Lab2-DB-Mongodb
Lab2-DB-MongodbLab2-DB-Mongodb
Lab2-DB-Mongodb
Lilia Sfaxi
 
Lab1-DB-Cassandra
Lab1-DB-CassandraLab1-DB-Cassandra
Lab1-DB-Cassandra
Lilia Sfaxi
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
Lilia Sfaxi
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-Correction
Lilia Sfaxi
 
TP0-UML-Correction
TP0-UML-CorrectionTP0-UML-Correction
TP0-UML-Correction
Lilia Sfaxi
 
TD4-UML
TD4-UMLTD4-UML
TD4-UML
Lilia Sfaxi
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
Lilia Sfaxi
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-Séquences
Lilia Sfaxi
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-Correction
Lilia Sfaxi
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
Lilia Sfaxi
 
TD1 - UML - DCU
TD1 - UML - DCUTD1 - UML - DCU
TD1 - UML - DCU
Lilia Sfaxi
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correction
Lilia Sfaxi
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrage
Lilia Sfaxi
 
Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques
Lilia Sfaxi
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web services
Lilia Sfaxi
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancés
Lilia Sfaxi
 
Android - Tp 5 - stockage de données
Android - Tp 5 -  stockage de donnéesAndroid - Tp 5 -  stockage de données
Android - Tp 5 - stockage de données
Lilia Sfaxi
 

Plus de Lilia Sfaxi (20)

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdf
 
Plan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfPlan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdf
 
Lab3-DB_Neo4j
Lab3-DB_Neo4jLab3-DB_Neo4j
Lab3-DB_Neo4j
 
Lab2-DB-Mongodb
Lab2-DB-MongodbLab2-DB-Mongodb
Lab2-DB-Mongodb
 
Lab1-DB-Cassandra
Lab1-DB-CassandraLab1-DB-Cassandra
Lab1-DB-Cassandra
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-Correction
 
TP0-UML-Correction
TP0-UML-CorrectionTP0-UML-Correction
TP0-UML-Correction
 
TD4-UML
TD4-UMLTD4-UML
TD4-UML
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-Séquences
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-Correction
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
TD1 - UML - DCU
TD1 - UML - DCUTD1 - UML - DCU
TD1 - UML - DCU
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correction
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrage
 
Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web services
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancés
 
Android - Tp 5 - stockage de données
Android - Tp 5 -  stockage de donnéesAndroid - Tp 5 -  stockage de données
Android - Tp 5 - stockage de données
 

Dernier

COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU  SOUS WINDOWSCOURS D'ADMINISTRATION RESEAU  SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
AlbertSmithTambwe
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
UNITECBordeaux
 
Les écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptxLes écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptx
abderrahimbourimi
 
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptxPRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
AlbertSmithTambwe
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
Université de Franche-Comté
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Laurent Speyser
 
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
OCTO Technology
 
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
Horgix
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
OCTO Technology
 

Dernier (9)

COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU  SOUS WINDOWSCOURS D'ADMINISTRATION RESEAU  SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
 
Les écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptxLes écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptx
 
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptxPRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
 
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
 
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...
 
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
 

Android-Tp4: stockage

  • 1. Institut National des Sciences Appliquées et de Technologie Tunisie Développement Android 2015-2016 TP4- STOCKAGE Dr. Lilia SFAXI Objectifs du TP : Familiariser les étudiants avec les différentes techniques de stockage dans Android : Shared Preferences, Fichiers et base SQLite.
  • 2. TP4 : Stockage Page 2 I. Stockage dans Android Il existe plusieurs options de stockage des données persistantes dans Android. Le choix de la solution idéale dépendra des besoins spécifiques des utilisateurs : • Les données sont-elles privées ou accessibles à d’autres applications ? • Combien d’espace disponible est-il requis ? • Les données doivent-elles être structurées, semi-structurées ou pas structurées ? Les options de stockage que nous allons montrer dans ce TP sont les suivantes : 1. Shared Preferences : Framework général qui permet de sauvegarder et extraire des paires clef-valeur persistantes de type primitif. Il permet de stocker des données de types booléen, réel, entier, long et string. Typiquement, les Shared Preferences sont utilisées pour sauvegarder les préférences utilisateur, tel que la sonnerie choisie, par exemple. 2. Stockage interne Il possible d’utiliser le stockage interne du téléphone pour sauvegarder des fichiers. Par défaut, ces fichiers sont privés (inaccessibles à partir d’autres applications). Quand l’application est supprimés, ces fichiers le sont aussi. 3. Stockage externe Tous les appareils compatibles Android supportent un espace de stockage externe, qui peut être une SD card, ou un espace interne non-amovible. Les fichiers sauvegardés dans un espace de stockage externe sont accessibles à toutes les applications en lecture. Ils peuvent être modifiés par l’utilisateur si le « USB mass storage » est activé pour transférer les fichiers sur un ordinateur. 4. Base de données SQLite Android fournit un support total du SGBD SQLite. SQLite est une bibliothèque logicielle qui implémente un moteur de base de données SQL avec zéro-configuration, léger et sans dépendances externes.
  • 3. TP4 : Stockage Page 3 Toutes les bases de données créées dans une application seront accessibles par nom depuis tout emplacement de cette application, mais pas de l’extérieur. La méthode recommandée pour la création d’une base de données SQLite d’utiliser une sous-classe de SQLiteOpenHelper, une classe d’assistance qui aide l’utilisateur à créer et manipuler sa base de données de manière simple. II. Exercice 1 : Shared Preferences II.1 Objectif Durée estimée de l’exercice : au plus 15mn L’objectif de cette première partie est de réaliser une application simple pour stocker quelques données dans les Shared Preferences. L’interface sera alors comme suit : II.2 Réalisation Pour lire un objet SharedPreferences, utiliser l’une de ces méthodes: • getSharedPreferences: pour utiliser plusieurs fichiers de préférences identifiés par nom
  • 4. TP4 : Stockage Page 4 • getPreferences: pour utiliser un seul fichier de préférences, donc sans définir un nom de fichier Pour ajouter des valeurs : • Appeler edit() pour obtenir un objet SharedPreferences.Editor • Ajouter des valeurs avec des méthodes, tel que putBoolean() et putString() • Valider les nouvelles valeurs avec commit() Pour lire des valeurs, utiliser les méthodes de SharedPreferences tel que getBoolean() ou getString()… Le code obtenu devra ressembler à ce qui suit : Activité 1. Créer un projet Android TP4-P1, permettant d’enregistrer et de lire des données dans les Shared Preferences. III. Exercice 2 : Support de stockage interne et externe III.1 Objectif Durée estimée de l’exercice : au plus 45mn L’objectif de cette partie est de réaliser une application simple pour stocker quelques données dans des fichiers internes et externes. L’interface sera alors comme suit :
  • 5. TP4 : Stockage Page 5 III.2 Stockage en interne Pour lire et écrire dans un fichier interne à l’application, utiliser les primitives FileInputStream et FileOutputStream fournies par Java. À l’écriture, il est impératif de spécifier un (ou plusieurs) mode(s) opératoire(s). Ces modes peuvent être combinés en utilisant || • MODE_PRIVATE : Le fichier n’est accessible que par l’application qui l’a créé. 1 2
  • 6. TP4 : Stockage Page 6 • MODE_WORLD_READABLE : Le fichier est accessible en lecture par les autres applications. • MODE_WORLD_WRITEABLE : Le fichier est accessible en écriture par les autres applications. • MODE_APPEND : Si le fichier existe déjà, les données seront ajoutées à la fin Voici des exemples pour lire et écrire dans un fichier interne. Pour visualiser les fichiers de votre application, ouvrir le Android Device Monitor ( ) et choisir File Explorer. data/data/<app_name>/files
  • 7. TP4 : Stockage Page 7 III.3 Stockage en externe Pour lire ou écrire des fichiers sur le stockage externe, l’application doit avoir les permissions READ_EXTERNAL_STORAGE ou WRITE_EXTERNAL_STORAGE. Avant de manipuler le support de stockage, il faut d’abord vérifier la disponibilité du support de stockage grâce à la méthode getExternalStorageState. Exemple d’écriture : Exemple de lecture :
  • 8. TP4 : Stockage Page 8 Activité 2. Créer un projet Android TP4-P2, permettant de lire et d’écrire du texte à partir de fichiers en interne et en externe. IV. Exercice 3 : Base de Données SQLite IV.1 Objectif Durée estimée de l’exercice : au plus 1h Réaliser une application simple permettant de manipuler des éléments dans une base de données. Les opérations que vous allez implémenter sont : l’ajout, l’affichage et la suppression. 1 2
  • 9. TP4 : Stockage Page 9 IV.2 Création de la base Pour manipuler une base de données SQLite, les étapes recommandées sont : 1. Créer une classe qui hérite de SQLiteOpenHelper 2. Créer des classes modèles représentant chacune des tables de la base 3. Créer la base de données et les tables nécessaires 4. Implémenter les méthodes suivantes : a. Le constructeur b. onCreate: contient les opérations réalisées à la création de la base de données c. onUpgrade: opérations réalisées quand la base fait un upgrade L’implémentation de ces deux méthodes se fait toujours de la même manière : Remarque Pour implémenter les différents CRUD, il est fortement déconseillé de le faire dans cette même classe, car cela risque de l’encombrer et de la rendre trop chargée et incompréhensible, surtout si le nombre de tables augmente. Il faudrait alors créer des classes indépendantes pour manipuler chacune de ces tables, et les appeler à partir de ce Helper.
  • 10. TP4 : Stockage Page 10 IV.3 Insertion Pour insérer un élément dans une table de la base, utiliser l’objet ContentValues, qui va contenir, pour chaque enregistrement, les valeurs des différentes colonnes. ContentValues values = new ContentValues() ; values.put(<column1_name>,<column1_value>) ; values.put(<column2_name>,<column2_value>) ; Une fois l’enregistrement créé, l’insérer dans la base en utilisant un objet (db) de type SQLiteDatabase. Cet objet et obtenu en appelant this.getWritableDatabase() à partir de la classe SQLiteOpenHelper. db.insert(<table_name>,null,values) ; Il ne faut jamais oublier de fermer la table une fois l’opération terminée. db.close() ; IV.4 Recherche Pour chercher et afficher un élément d’une table 1. Créer une chaîne de caractères query contenant votre requête SELECT 2. Créer un curseur pour parcourir le résultat de la chaîne : Cursor cursor = db.rawQuery(query, null) ; 3. Parcourir les éléments avec le curseur. Ne pas oublier de faire les cast nécessaires ! if (cursor.moveToFirst()){ cursor.moveToFirst() ; int elem1 = Integer.parseInt(cursor.getString(0)) ; String elem2 = cursor.getString(1) ; … cursor.close() ; } db.close() ;
  • 11. TP4 : Stockage Page 11 IV.5 Suppression Pour supprimer un ou plusieurs éléments de la base : 1. Créer une chaîne de caractères query contenant votre requête SELECT 2. Créer un curseur pour parcourir les éléments de la requête 3. Utiliser la fonction suivante : db.delete(<table_name>, <id_name> + " = ? ", <id_value>) ; N’oubliez pas de ferme le curseur et la base ! V. Homework Toute application consistante ne peut pas de contenter d’un stockage en interne dans le device. Il faut donc penser à d’autres modes de stockage distants. L’un de ces modes de stockage est le stockage dans une base de données hébergée sur le cloud. Les systèmes Android fonctionnent parfaitement avec l’une de ces bases de données, Firebase. Créer une base de données avec Firebase, et un client Android permettant d’afficher son contenu dans des Cards (en utilisant le RecyclerView), de supprimer et d’ajouter de nouveaux éléments. Remarquez la réactivité de ces opérations en lançant à la fois votre émulateur, un appareil Android et un navigateur montrant le contenu de la base. Activer également la fonction permettant de manipuler les éléments de la base en Offline.