Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 27
Utilisation d’un fournisseur de contenu (content provider) 281
opaque... jusqu’à ce que vous décidiez de la déchiffrer à l’aide des différentes méthodes
d’accès de la classe Uri.
Vous pouvez également utiliser des objets String codés en dur ("content:// contacts/
people", par exemple) et les convertir en instances Uri grâce à Uri.parse(). Ceci dit, ce
n’est pas une solution idéale car les valeurs des Uri de base sont susceptibles d’évoluer au
cours du temps.
Création des requêtes
À partir d’une Uri de base, vous pouvez exécuter une requête pour obtenir des données du
fournisseur de contenu lié à cette Uri. Ce mécanisme ressemble beaucoup à SQL : on
précise les "colonnes" qui nous intéressent, les contraintes permettant de déterminer les
lignes du résultat, un ordre de tri, etc. La seule différence est que cette requête s’adresse à
un fournisseur de contenu, pas directement à un SGBDR comme SQLite.
Le point névralgique de ce traitement est la méthode managedQuery(), qui attend cinq
paramètres :
1. L’Uri de base du fournisseur de contenu auquel s’adresse la requête ou l’Uri
d’instance de l’objet interrogé.
2. Un tableau des propriétés d’instances que vous voulez obtenir de ce fournisseur de
contenu.
3. Une contrainte, qui fonctionne comme la clause WHERE de SQL.
4. Un ensemble éventuel de paramètres à lier à la contrainte, par remplacement des éventuels marqueurs d’emplacements qu’elle contient.
5. Une instruction de tri facultative, qui fonctionne comme la clause ORDER BY de
SQL.
Cette méthode renvoie un objet Cursor à partir duquel vous pourrez ensuite récupérer les
données produites par la requête.
Les "propriétés" sont aux fournisseurs de contenu ce que sont les colonnes aux bases de
données. En d’autres termes, chaque instance (ligne) renvoyée par une requête est formée
d’un ensemble de propriétés (colonnes) représentant, chacune, un élément des données.
Tout ceci deviendra plus clair avec un exemple : voici l’appel de la méthode managedQuery() de la classe ConstantsBrowser du projet ContentProvider/Constants :
constantsCursor=managedQuery(Provider.Constants.CONTENT_URI,
PROJECTION, null, null, null);
Les paramètres de cet appel sont :
Livre Android.book Page 281 Dimanche, 8. novembre 2009 12:23 12
Précédent

- 296/391

Suivant