09.02.2017 Views

creez-des-applications-pour-android

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

5.3 Le partage de contenus entre <strong>applications</strong><br />

Néanmoins, je peux affiner encore plus la recherche en ajoutant un autre segment qui indiquera<br />

l’identifiant du contact recherché : content://com.<strong>android</strong>.contacts/contact/18.<br />

Ainsi, si j’effectue une recherche avec content://com.<strong>android</strong>.contacts/contact sur mon<br />

téléphone, j’aurai 208 résultats, alors que si j’utilise content://com.<strong>android</strong>.contacts/contact/18<br />

je n’aurai qu’un résultat, celui d’identifiant 18.<br />

De ce fait, le schéma sera content:// et l’autorité sera composée du nom du package. Le premier<br />

segment indiquera la table dans laquelle il faut chercher et le deuxième la composante de la ligne<br />

à récupérer : content://sdz.chapitreQuatre.Provider/Client/5. Ici, je récupère la cinquième<br />

entrée de ma table Client dans mon application Provider qui se situe dans le package<br />

sdz.chapitreQuatre.<br />

[[information]] | On ne <strong>pour</strong>ra retrouver une ligne que si l’on a défini un identifiant en lui donnant<br />

comme nom de colonne _ID. Dans l’exemple précédent, on cherche dans la table Client celui<br />

qui a <strong>pour</strong> valeur 5 dans la colonne _ID.<br />

Android possède nativement un certain nombre de fournisseurs de contenu qui sont décrits<br />

dans <strong>android</strong>.provider. Vous trouverez une liste de ces fournisseurs sur la documentation.<br />

On trouve parmi ces fournisseurs <strong>des</strong> accès aux données <strong>des</strong> contacts, <strong>des</strong> appels, <strong>des</strong> médias,<br />

etc. Chacune de ces classes possède une constante appelée CONTENT_URI qui est en fait l’URI<br />

<strong>pour</strong> accéder au fournisseur qu’elles incarnent. Ainsi, <strong>pour</strong> accéder au fournisseur de contenu de<br />

ContactsContract.Contacts, on <strong>pour</strong>ra utiliser l’URI ContactsContract.Contacts.CONTENT_URI.<br />

[[information]] | Vous remarquerez que l’autorité <strong>des</strong> fournisseurs de contenu d’Android ne respecte<br />

pas la tradition qui veut qu’on ait le nom du package ainsi que le nom du fournisseur. Google<br />

peut se le permettre mais pas vous, alors n’oubliez pas la bonne procédure à suivre.<br />

On trouve par exemple :<br />

Nom Description Interface<br />

Contact Permet l’accès aux données <strong>des</strong><br />

contacts de l’utilisateur.<br />

MagasinListe les différents médias<br />

mul-<br />

timé-<br />

dia<br />

disponibles sur le support, tels<br />

que les images, vidéos, fichiers<br />

audios, etc.<br />

Navigateur Les données de navigation<br />

Appel<br />

telles que l’historique ou les<br />

archives <strong>des</strong> recherches.<br />

Appels passés, reçus et<br />

manqués par l’utilisateur.<br />

Dictionnaire Les mots que connaît le<br />

dictionnaire utilisateur.<br />

La base est ContactsContract, mais il existe<br />

une vingtaine de façons d’accéder à ces<br />

informations.<br />

La base est MediaStore, mais il existe encore<br />

une fois un bon nombre de dérivés, par exemple<br />

MediaStore.Audio.Artists liste tous les<br />

artistes dans votre magasin.<br />

On a Browser.SearchColumns <strong>pour</strong> les<br />

historiques <strong>des</strong> recherches et<br />

Browser.BookmarkColumns <strong>pour</strong> les favoris de<br />

l’utilisateur.<br />

On peut trouver ces appels dans CallLog.Calls.<br />

Ces mots sont gérés avec<br />

UserDictionary.Words.<br />

[[attention]] | Pour avoir accès à ces contenus natifs, il faut souvent demander une permission. Si<br />

vous voulez par exemple accéder aux contacts, n’oubliez pas de demander la permission adaptée :<br />

<strong>android</strong>.permission.READ_CONTACTS.<br />

367

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!