Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 1
Chapitre 6
Accs aux donnes
Fichiers et BD
KHAYATI Naoufel
AU. 2012 - 2013
209
PLAN
210
Fichiers
Fichiers locaux
Fichiers partags
Fichiers comme Ressources
Bases de Donnes SQLite
Classe dassistance
Classe de Gestion ou dadaptation
Content Providers
Ct Client
Ct Fournisseur
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 2
211
FICHIERS
Introduction
212
En plus des API standards de Java, Android propose un ensemble de
classes offrant des mthodes permettant la gestion des donnes stockes
dansdesfichiersoudansdesBD.
Ces fichiers et BD sont, par dfaut, locaux i.e. associs au contexte de
lapplication, maisqui peuvent tre externaliss.
La classe de base Contextqui permet l'accs des ressources spcifiques
l'application
databaseList(), deleteFile(), getFileStreamPath(), etc.
La classe Environment qui permet laccs aux variables denvironnement
utilisespar Android.
getDataDirectory (), getExternalStorageDirectory(), DIRECTORY_DCIM,
DIRECTORY_MOVIES, DIRECTORY_MUSIC, DIRECTORY_PICTURES, etc.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 3
Fichiers Locaux
213
Android propose deux mthodespour accder desfichiers.
La mthode openFileOutput: permet douvrir le fichier encriture.
Si le fichier nexiste pas, il sera cr.
Si le fichier existe, soncontenusera cras.
La mthode openFileInput: permet douvrir le fichier enlecture.
Ces mthodes ne prennent en charge que les noms de fichiers
localissdansle rpertoire par dfaut de lapplication (/data).
Onne peut passpcifier deschemins.
Fichiers Locaux
214
Android propose plusieurs autres mthodes
utilitaires pour manipuler les fichiers depuis le
contexte de lapplication :
fileList(): liste touslesfichierslocaux de lapplication;
deleteFile(): supprime le fichier spcifi.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 4
Fichiers Locaux
215
getFilesDir () : permet dobtenir le chemin absolu du
rpertoire dans le systme de fichiers o tous les
fichierscrsavec openFileOutput()sont stocks.
getFileStreamPath () : retourne le chemin absolu du
fichier spcifi en argument et qui est cr avec
openFileOutput.
Fichiers Locaux
216
Ecri ture
Lecture
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 5
Fichiers Locaux
217
ModesdAccs
MODE_PRIVATE : Par dfaut, les fichiers crs par la mthode
openFileOutputsont restreints lapplication.
Cette constante reprsentant le mode par dfaut vaut 0.
Ce mode signifie que le fichier cr sera accessible uniquement
lapplicationlayant cr ;
Toute tentative daccs aux fichiers locaux dune application externe
sera refuse.
MODE_APPEND permet dcrire les donnes en fin de fichier sans
crasement.
Cette constante vaut 32768.
Fichiers Partags
218
Afin de permettre aux autres applications daccder aux fichiers
locaux, on peut spcifier des permissions sous forme de nouveaux
modesdaccs.
MODE_WORLD_READABLE, vaut 1 et permet aux autres applications
de lire le fichier ;
MODE_WORLD_WRITEABLEvaut 2 et permet aux autres applications
de modifier le fichier ;
La constante MODE_APPENDpeut tre combine avec lesautres.
MODE_PRIVATE| MODE_APPEND
MODE_WORLD_WRITEABLE| MODE_APPEND
MODE_WORLD_READABLE| MODE_APPEND
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 6
Fichiers comme Ressources
219
On peut intgrer lesfichiers comme ressources dans
lesapplications.
Pour embarquer des donnes, on doit placer les
ressourcesbrutesdansle rpertoire res/rawduprojet.
Les fichiers embarqus seront accessibles en lecture
seule par lapplication via la mthode
openRawResourcegrce aux ressources.
Fichiers comme Ressources
220
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 7
Vers les Content-Providers
221
Deux pointsimportants:
Lutilisation des fichiers (embarqus) dans une application
Android est souvent dconseill.
Il vaut mieux allger l'application au maximum et prvoir le
tlchargement de ressources ncessaires et l'utilisation de
fournisseursdecontenu( voir ultrieurement).
Si on veut partager un fichier avec une autre application, la
bonne pratique est lutilisationdunfournisseurdecontenu.
Ce dernier offrira plus de scurit et de contrle sur les donnes
exposes.
222
Bases
de
Donnes
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 8
BD SQLite
223
Android sest dot dun SGBD conu pour tre
suffisamment lger et compact pour tourner sur des
environnements aux capacitsrduites.
SQLite.
Utilisaussi avec Skype, Firefox, etc.
Trsefficace pour lesapplicationsembarques.
lobjectif est de faire persister des donnes
localement sur le terminal.
BD SQLite
224
Contrairement aux SGBDs habituels, SQLite ne
ncessite pasde serveur pour fonctionner.
Son excution se fait dans le mme processus que celui
de l'application.
Une opration massive lance sur la BD pourrait
nuire aux performancesde lapplication.
Il faut savoir matriser sonimplmentation.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 9
BD SQLite
225
Chaque application Android peut avoir sa propre BD.
Il est possible d'avoir plusieursBDpar application.
Gnralement, lesBDsont stockesdansles rpertoires de la forme
/ data/ data/ <package>/ databases/ [Link]
Chaque base est cre par dfaut selon le mode MODE_PRIVATE.
Elle ne sera accessible qu'auseinde l'applicationelle-mme.
Pour interagir avec SQLite, il faut avoir recours aux classes
[Link].*.
[Link]
[Link]
Dfinition dune BD Classe dassistance
226
Fournir une implmentation concrte de la classe
SQLiteOpenHelper.
Une classe d'assistance pour grer la cration de BD et pour
grer lesversions.
Elle prend soin d'ouvrir la BD si elle existe, de la crer si elle
n'existe paset passer dune version une autre si ncessaire .
Crer une sous-classe implmentant desmthodesabstraites
ounon:
onCreate().
onUpgrade().
onOpen().
etc.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 10
Dfinition dune BD Classe dassistance
227
Appele automatiquement lorsque la BD sera cre pour la
premire fois.
C'est l que la cration de tables et de la population initiale des
tablesdevrait se produire.
Appele lorsque la base de donnes doit tre mise jour pour
passer la nouvelle versionduschma.
Elle s'excute dansune transaction.
Si une exception est leve, toutes les modifications seront
automatiquement annules.
Dfinition dune BD Classe dassistance
228
Appele lorsque la base de donnesdoit tre rtrograde.
Appele chaque fois que la version actuelle est plus rcente
que celle demande.
Elle n'est pas abstraite : il n'est donc pas obligatoire de
limplmenter.
Limplmentation par dfaut rejettera toute opration de
rtrogradation.
Elle s'excute dansune transaction.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 11
Dfinition dune BD Classe dassistance
229
Appele lorsque la BDa t ouverte.
Appele aprsavoir :
Configur la connexion la base
Cr le schma de base
Mis jour la base enUpgrade ouDowngrade.
Si la connexion la base doit tre configure d'une
certaine faon avant que le schma ne soit cr, mis jour
ourtrograd, il faut utiliser onConfigure().
Dfinition dune BD Classe dassistance
230
Appele lorsque la connexion sera configure pour
permettre des fonctionnalits telles que Write-Ahead
Logging ou ForeignKeySupport .
Appele avant touteslesautresmthodes.
Elle ne doit appeler que des mthodes qui permettent
de configurer lesparamtresde la connexion.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 12
Cration de Tables Classe dassistance
231
La cration dune table se fait avec la syntaxe SQL
habituelle :
execSQL(): excute une instructionSQLqui ne retourne
pas des donnes ou que ces dernires peuvent tre
ignores.
Ni SELECT, ni INSERTINTO, ni DELETEFROM, etc.
Cration de Tables Classe dassistance
232
Il est possible de dfinir des contraintes pour
chaque attribut, par exemple :
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 13
Upgrade de BD Classe dassistance
233
En gnral, le contenu de la mthode onUpgrade()
est assez constant puisqu'on se contente de :
Supprimer lestablesdj existantes.
Lesreconstruire suivant le nouveauschma.
Manipulation dune BD Classe de gestion
234
Il est plus propre de crer et dutiliser une classe
spcifique pour la gestion desdonnesde la base.
Cest une classe dadaptationqui joue le rle dunDAO.
Cest une classe incluant au moins les mthodes CRUD
(Create Request Update Delete).
oninstancie dedansla classe dassistance,
onlouvre, et
on rcupre un objet SQLiteDatabase sur lequel on applique les
mthodesCRUD.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 14
Rcupration dune BD Classe de gestion
235
Cette mthodercupre une BDsur laquelleon veut lire et/ oucrire.
son 1
er
appel, les mthodes onCreate() et / ou onUpgrade() et / ou
onDowngrade()et / ouonOpen() sont invoques.
L'objet SQLiteDatabasefourni est unobjet encache, constant.
Si des oprations se droulent sur la base aprs sa rcupration on ne les
verra passur l'objet.
Il faudra doncen recrer unautre pour avoir le nouvel tat de la base.
Il faut sassurer de fermer la connexion la fin des traitements grce la
mthodeclose().
236
Avec getWritableDatabase(), si la base ne peut pas
tre ouverte en criture, une exception de type
SQLiteExceptionsera lance.
On peut dans ce cas, utiliser en priorit
getReadableDatabase().
Rcupration dune BD Classe de gestion
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 15
Requtes Slection Classe de gestion
237
Une requte de slection peut tre excute via la
mthode query() sur lobjet SQLiteDatabase retourn
par lune desmthodesde rcupration.
La mthode query()retourne unobjet de type Cursor.
Ce curseur permet de naviguer dansle rsultat et de traiter
la rponse (enlecture oucriture).
La mthode query() accepte jusqu 9 arguments
comme suit :
Requtes Slection Classe de gestion
238
distinct : un boolen spcifiant si le rsultat doit
contenir ou non deslmentsuniques.
table : une chaine de caractres spcifiant le nom
de la table interroger.
columns : un tableau de chaines de caractres
spcifiant lescolonnesde projection de la requte.
La valeur null signifie que toutes les colonnes de la
table seront retournes.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 16
Requtes Slection Classe de gestion
239
selection : une chaine de caractres spcifiant la clause
WHEREde la requte.
La valeur null signifie quaucune clause WHERE ne sera
applique.
Les valeurs '?' signifient que chacune sera remplace par la
valeur spcifie dansle paramtre selectionArgs.
selectionArgs : un tableau de chaines de caractres
spcifiant les valeurs de remplacement des '?' dans le
paramtre selectiondanslordre dapparition.
groupBy : une chaine de caractres spcifiant un filtre de
regroupement deslignes
Requtes Slection Classe de gestion
240
having : une chaine de caractres spcifiant un filtre de
condition dapparition des lignes en relation avec le
paramtre groupBy.
La valeur null signifie que toutes les lignes seront incluses dans le
rsultat.
La valeur null est requise si la valeur du paramtre groupByest
galement null.
orderBy : une chaine de caractres spcifiant lordre de tri
deslignes.
limit : une chaine de caractres limitant le nombre de lignes
retournespar la requte.
La valeur null signifie que toutesleslignesseront retournes.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 17
Requtes Slection Classe de gestion
241
Rcuprer un enregistrement en fonction de son nom.
Rcuprer un enregistrement en fonction de son id.
Retourner touslesenregistrements de la table.
Requtes Slection Classe de gestion
242
Lesmthodesde navigation de la classe Cursor.
Toutescesmthodesretournent desboolens.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 18
Requtes Slection Classe de gestion
243
Quelquesmthodesdinformation de la classe Cursor.
Requtes Slection Classe de gestion
244
Mthodesdextraction de valeursdun curseur.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 19
Requtes Insertion Classe de gestion
245
Utiliser la mthode insert()de la classe SQLiteDatabase.
values est un objet de type ContentValues spcifiant les
valeursde la ligne insrer.
Cet objet stocke lesvaleursde chaque colonne de la ligne
insrer sous la forme dune collection dassociations entre le
nomde la colonne et sa valeur.
Retourne lidentifiant de la ligne insre ou -1 si une erreur
se prsente.
Requtes Insertion Classe de gestion
246
On peut aussi utiliser la mthode execSQL() en
spcifiant une requte SQL INSERT pour arriver au
mme rsultat.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 20
Requtes MAJ Classe de gestion
247
Utiliser la mthode update() de la classe
SQLiteDatabase enspcifiant :
unobjet ContentValuescontenant lesnouvellesvaleurs,
la clause de conditionWHERE.
Il est possible dutiliser une requte SQL UPDATE
pour arriver aumme rsultat.
Requtes Suppression Classe de gestion
248
Utiliser la mthode delete() de la classe
SQLiteDatabase enspcifiant :
le nomde la table
le critre permettant la base didentifier les lments
supprimer.
Il est possible dutiliser une requte SQL DELETE pour
arriver aumme rsultat.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 21
BD et Activits Android
249
Crer une interface de manipulation de la BD.
Instancier la classe de gestion et utiliser les mthodes
dj cresdedans.
Exemple :
Contact c = new Contact ([Link]().toString(),
[Link]().toString());
ContactsAdapter BDContacts=newContactsAdapter (this);
[Link]();
[Link](c);
[Link]();
[Link]();
Vers les Content-Providers
250
Les donnes gres sous forme de fichiers ou de bases de
donnes rsident dans un espace priv lapplication les
ayant cres.
Limite desapplicationsutilisant desbasesde donnesqui leurs
sont propreset donc nonpartageablesentre programmes.
Il est intressant de partager les donnes avec dautres
applications.
Les applicationsdAndroid : gestion des contacts, des photos, des
fichiersson, etc. offrent la possibilit de partager desdonnes.
La solution de partage des donnes entre applications est
lutilisation desContent-Providers.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 22
251
Fournisseurs
de
Contenu
Content Providers
252
Un exemple simple et courant est de pouvoir consulter les contacts de
l'utilisateur qui sont enregistrsdanslapplication Carnet d'adresses.
Techniquement, un Content Provider est dcoup en deux lments
distincts:
Unfournisseur de contenu, qui sera utilis dans l'application qui distribue
soncontenuaux autresapplications.
Un client, qui permettra aux autres applications de demander au
fournisseur lesinformationsvoulues.
Ils offrent une interface standardise permettant l'change scuris
de donnes, ainsi que les communications interprocessus, de faon
faciliter lestransactionsentre applications.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 23
Ct Client
253
Accsdesfournisseurs(1)
Les fournisseurs de contenu permettent l'encapsulation de donnes,
et, pour accder cesdonnes, il faudra utiliser lesURI.
On ne sait pas o ni comment les donnes sont stockes, mais quand
mme lesdonnessont mises dispositiondesutilisateurs.
Quel que soit le type de stockage, les donnes sont toujours prsentes
de la mme manire.
Un fournisseur de contenu prsente les donnes une application
extrieure dansune ouplusieurstables.
Chaque entre dans la table est reprsente dans une ligne et chaque
colonne reprsente unattribut.
Avant de faire appel un fournisseur de contenu, on doit savoir
lavance la structure de cestables.
Uneinformationfourniepar le dveloppeur duProvider.
Ct Client
254
Accsdesfournisseurs(2)
Il est possible d'accder aux donnes d'une autre
applicationavec unobjet client ContentResolver.
Cet objet a des mthodes qui appellent d'autres
mthodes, qui ont le mme nom, mais qui se trouvent
dans un objet ContentProvider, c'est--dire l'objet qui
met disposition le contenu pour les autres
applications.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 24
Ct Client
255
Le ContentResolverfournit desmthodesCRUD.
Exp. Si un ContentResolver demande un ContentProvider de lire des
entres dans la BD de l'application gre par ce dernier, il appellera
sur lui-mme une mthode M afin dappeler la mme mthode M sur le
ContentProvider.
Le rle du ContentResolver est didentifier le bon ContentProvider
enfonctionde lURI qui lui est pass enparamtre.
Les mthodes de manipulation des objets stocks du ContentResolver
acceptent toutesune URI enparamtre (Lecture ouencriture).
Pour rcuprer le gestionnaire des fournisseurs de contenu, on utilise
la mthode :
ContentResolver getContentResolver () de la classe Context.
Ct Client
256
L'URI desfournisseursdecontenu
Le schma d'une URI qui reprsente un fournisseur de contenu est
content.
Ce type d'URI commence par content://.
Aprs le schma, on trouve un cheminhirarchique : plus on rajoute
d'informations, plusondevient prcissur le contenuvoulu.
Un chemin permet d'affiner la slection et de choisir une table, un fichier ou
encore une ligne dansune table.
Leslmentsducheminsont ditssegmentset sont sparspar des / .
Le premier segment duchemins'appelle l'autorit.
Une autorit est utilise en tant qu'identifiant unique afin de pouvoir
diffrencier les fournisseurs dans le registre des fournisseurs que tient
Android.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 25
Ct Client
257
Par exemple, la classe ContactsContract sert accder aux
donnesassociesaux contactsenregistrsdansle tlphone.
Elle possde plusieurstables:
[Link] : contient toutes les donnes sur les contacts
(numrosde tlphone, adressese-mail, comptesFacebook, etc.).
[Link] : une ligne de cette table reprsente un
ensemble de donnesdcrivant une personne associe un compte (par
exemple, compte Gmail).
[Link] : fait le lien entre les deux autres tables, i.e.
elle lie uncontact sesdonnespersonnelles.
Ct Client
258
Pour accder ContactsContract, on peut utiliser l'URI
content://[Link]/ .
Pour accder uniquement la table Contact, on peut
utiliser l'URI :
content://[Link]/contact.
On peut raffiner encore la recherche en ajoutant un
autre segment qui indiquera l'identifiant du contact
recherch :
content://[Link]/contact/3.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 26
Ct Client
259
Ce qui est not au niveaude lautorit reprsente le
nomdupackage de lapplication.
Ce dernier est ajout dans la section provider du
fichier manifeste de lapplication qui dploie le
provider.
Google a opt pour un autre choix : Raccourcir les
URI daccsaux providersstandard dAndroid.
content://contacts.
content://contacts/people.
Ct Client
260
Android possde nativement un certain nombre de
fournisseurs de contenus qui sont dcrits dans
[Link].
On trouve parmi ces fournisseurs, des contacts, des appels,
desmdias, etc.
Chacune de ces classes possde une constante appele
CONTENT_URI qui est en fait l'URI pour accder au content
provider qu'ellesreprsentent.
Pour accder au fournisseur de contenu de
[Link], on pourra utiliser l'URI
[Link].CONTENT_URI.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 27
Ct Client
261
Exemple pour lajout de donnes
Permet d'insrer une valeur avec un ContentValues.
L'URI retourn reprsente la nouvelle ligne insre.
Pour la rcupration, la modification et la suppression
denregistrements, cest pareil.
Pareil ce qui a t fait avec les BD, mais avec plus ou
moinsde paramtres.
Exemples
262
Lister tous les contacts partir du content provider
Contacts
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 28
Exemples
263
Lister tous les contacts partir du content provider
ContactsContract
Exemples
264
Insrer un contact au rpertoire
personUri
phoneUri =
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 29
Cot Fournisseur
265
Crerunfournisseur(1)
Crer une classe hritire de ContentProvider.
Cette classe doit implmenter les6 mthodessuivantes:
onCreate() : Appele afin dinitialiser le Content Provider.
query() : retourne un objet Cursor sur lequel on peut itrer pour
rcuprer lesdonnes.
insert() : utilise pour ajouter desdonnesau Content Provider.
update() : utilise pour mettre jour une donne dj existante
dansle Content Provider.
delete() : permet de supprimer une donne duContent Provider.
getType() : retourne le type MIMEdes donnes contenues dans le
Content Provider.
Cot Fournisseur
266
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 30
Cot Fournisseur onCreate()
267
Le point dentre principal dunfournisseur de contenu.
Onralise dedansdesoprationsdinitialisation
Exp. Rpertoire de stockage (dans une carte SD, mmoire
interne).
On vrifie que ce rpertoire existe et, dansle cascontraire,
onle crera.
Onteste si la BDSQLite existe ounon.
Cot Fournisseur getType()
268
Prend une Uri en paramtre et renvoie le type MIMEqui
lui est associ.
Type MIME?
Unidentifiant de format de donnessur Internet.
Compos daumoinsdeux parties: typeet sous-type.
application/ pdf - application/ xml - application/ msword
audio/ mpeg audio/ x-wav
image/ gif image/ jpeg
text/ html text/ plain text/ xml
Application/ [Link]-powerpoint
VND= Variable Node Decoder
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 31
Cot Fournisseur getType()
269
Cette Uri peut dsigner une collection ou une instance.
On doit la tester pour renvoyer le type MIME
correspondant.
Cot Fournisseur
270
Crerunfournisseur(2)
On doit, en 2
me
lieu, fournir une Uri comme un membre
public statique contenant lUri de chaque collection
supporte par le fournisseur de contenu.
Gnralement, on dfinit cette Uri dans la classe du
fournisseur lui-mme.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 32
Cot Fournisseur
271
Crerunfournisseur(3)
Il est conseill de dclarer les attributs du fournisseur
dans une classe publique statique implmentant
linterface BaseColumns.
les valeurs de ces constantes doivent tre les noms des
colonnesrespectivesde la table de la BD.
Cot Fournisseur
272
Crerunfournisseur(4)
Chaque fournisseur de contenu s'enregistre sur un
appareil l'aide du Manifest.
Dclarer ce Content Provider dans le manifest de
lapplicationAndroid.
Naoufel KHAYATI Cours Dveloppement Mobile
Partie I : Android
ENISo IA3.1 Option ISD 2012 / 2013 33
Cot Fournisseur
273
La proprit android:nameest le nomde la classe du
fournisseur de contenu, prfix par un point pour
indiquer quil se trouve dans lespace de noms des
classesde cette application.
La proprit android:authorities est une liste
dautorits reconnues par le fournisseur, spares par
despoints-virgules.
Chaque autorit de toute valeur CONTENT_URI devrait tre
incluse dansla liste android:authorities.
En Rsum
274
Les fournisseurs de contenu sont indispensables si on
souhaite partager des donnes avec dautres
applications.
MAIS, Ne construire un fournisseur que si ncessaire
puisquil ne sagit pas dune tche triviale.