Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
288 L’art du développement Android
D’abord, une petite dissection
Comme on l’a expliqué au chapitre précédent, l’Uri est le pilier de l’accès aux données
d’un fournisseur de contenu : c’est la seule information qu’il faut réellement connaître.
À partir de l’Uri de base du fournisseur, vous pouvez exécuter des requêtes ou construire
une Uri vers une instance précise dont vous connaissez l’identifiant.
Cependant, pour construire un fournisseur de contenu, vous devez en savoir un peu plus
sur les détails internes de l’Uri d’un contenu. Celle-ci est composée de deux à quatre
parties en fonction de la situation :
● Elle comprend toujours un schéma (content://), indiquant qu’il s’agit d’une Uri de
contenu, pas d’une Uri vers une ressource web (http://), par exemple.
● Elle a toujours une autorité, qui est la première partie du chemin placé après le schéma.
L’autorité est une chaîne unique identifiant le fournisseur qui gère le contenu associé à
cette Uri.
● Elle contient éventuellement un chemin de types de données, formé de la liste des
segments de chemins situés entre l’autorité et l’identifiant d’instance (s’il y en a un).
Ce chemin peut être vide si le fournisseur ne gère qu’un seul type de données. Il peut
être formé d’un seul segment (truc) ou de plusieurs (truc/machin/chouette) pour
gérer tous les scénarios d’accès aux données requis par le fournisseur de contenu.
● Elle peut contenir un identifiant d’instance, qui est un entier identifiant une information
particulière du contenu. Une Uri de contenu sans identifiant d’instance désigne
l’ensemble du contenu représenté par l’autorité (et, s’il est fourni, par le chemin des
données).
Une Uri de contenu peut être aussi simple que content://sekrits, qui désigne l’ensemble du contenu fourni par n’importe quel fournisseur lié à l’autorité sekrits (SecretsProvider, par exemple), ou aussi compliquée que content://sekrits/card/pin/17,
qui désigne l’information (identifiée par 17) de type card/pin gérée par le fournisseur de
contenu sekrits.
Puis un peu de saisie
Vous devez ensuite proposer des types MIME correspondant au contenu de votre fournisseur.
Android utilise à la fois l’Uri de contenu et le type MIME pour identifier le contenu sur le
terminal. Une Uri de collection – ou, plus précisément, la combinaison d’une autorité et
d’un chemin de type de données – doit correspondre à deux types MIME, l’un pour la
collection, l’autre pour une instance donnée. Ces deux types correspondent aux motifs
d’Uri que nous avons vus dans la section précédente, respectivement pour les Uri avec et
sans identifiant. Comme on l’a vu aux Chapitres 24 et 25, on peut fournir un type MIME à
une intention pour qu’elle se dirige vers l’activité adéquate (l’intention ACTION_PICK
Livre Android.book Page 288 Dimanche, 8. novembre 2009 12:23 12
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
288 L’art du développement Android
D’abord, une petite dissection
Comme on l’a expliqué au chapitre précédent, l’Uri est le pilier de l’accès aux données
d’un fournisseur de contenu : c’est la seule information qu’il faut réellement connaître.
À partir de l’Uri de base du fournisseur, vous pouvez exécuter des requêtes ou construire
une Uri vers une instance précise dont vous connaissez l’identifiant.
Cependant, pour construire un fournisseur de contenu, vous devez en savoir un peu plus
sur les détails internes de l’Uri d’un contenu. Celle-ci est composée de deux à quatre
parties en fonction de la situation :
● Elle comprend toujours un schéma (content://), indiquant qu’il s’agit d’une Uri de
contenu, pas d’une Uri vers une ressource web (http://), par exemple.
● Elle a toujours une autorité, qui est la première partie du chemin placé après le schéma.
L’autorité est une chaîne unique identifiant le fournisseur qui gère le contenu associé à
cette Uri.
● Elle contient éventuellement un chemin de types de données, formé de la liste des
segments de chemins situés entre l’autorité et l’identifiant d’instance (s’il y en a un).
Ce chemin peut être vide si le fournisseur ne gère qu’un seul type de données. Il peut
être formé d’un seul segment (truc) ou de plusieurs (truc/machin/chouette) pour
gérer tous les scénarios d’accès aux données requis par le fournisseur de contenu.
● Elle peut contenir un identifiant d’instance, qui est un entier identifiant une information
particulière du contenu. Une Uri de contenu sans identifiant d’instance désigne
l’ensemble du contenu représenté par l’autorité (et, s’il est fourni, par le chemin des
données).
Une Uri de contenu peut être aussi simple que content://sekrits, qui désigne l’ensemble du contenu fourni par n’importe quel fournisseur lié à l’autorité sekrits (SecretsProvider, par exemple), ou aussi compliquée que content://sekrits/card/pin/17,
qui désigne l’information (identifiée par 17) de type card/pin gérée par le fournisseur de
contenu sekrits.
Puis un peu de saisie
Vous devez ensuite proposer des types MIME correspondant au contenu de votre fournisseur.
Android utilise à la fois l’Uri de contenu et le type MIME pour identifier le contenu sur le
terminal. Une Uri de collection – ou, plus précisément, la combinaison d’une autorité et
d’un chemin de type de données – doit correspondre à deux types MIME, l’un pour la
collection, l’autre pour une instance donnée. Ces deux types correspondent aux motifs
d’Uri que nous avons vus dans la section précédente, respectivement pour les Uri avec et
sans identifiant. Comme on l’a vu aux Chapitres 24 et 25, on peut fournir un type MIME à
une intention pour qu’elle se dirige vers l’activité adéquate (l’intention ACTION_PICK
Livre Android.book Page 288 Dimanche, 8. novembre 2009 12:23 12
