Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
260 L’art du développement Android
Pourtant, on n’a absolument aucune idée de ce qu’il est possible de faire avec toutes
les Uri. On peut sûrement afficher tous les contenus, mais peut-on les modifier ? Peut-on les
appeler au téléphone ? En outre, l’utilisateur pouvant ajouter des applications avec des
nouveaux types de contenus à tout moment, on ne peut pas supposer connaître toutes
les combinaisons possibles en consultant simplement les applications de base fournies
avec tous les terminaux Android.
Heureusement, les concepteurs d’Android ont pensé à ce problème et ont mis à notre
disposition plusieurs moyens de présenter à nos utilisateurs un ensemble d’activités à
lancer pour une Uri donnée – même si l’on n’a aucune idée de ce que représente vraiment
cette Uri. Ce chapitre explore quelques-uns de ces outils d’introspection.
Faites votre choix
Parfois, on sait qu’une Uri représente une collection d’un certain type : on sait, par exemple, que content://contacts/people représente la liste des contacts dans le répertoire
initial des contacts. Dans ce cas, on laisse l’utilisateur choisir un contact que notre activité
pourra ensuite utiliser (pour le marquer ou l’appeler, par exemple).
Pour ce faire, on doit créer une intention ACTION_PICK sur l’Uri concernée, puis lancer
une sous-activité (par un appel à startActivityForResult()) afin que l’utilisateur
puisse choisir un contenu du type indiqué. Si notre méthode de rappel onActivityResult() pour cette requête reçoit le code résultat RESULT_OK, la chaîne de données peut
être analysée afin de produire une Uri représentant le contenu choisi.
À titre d’exemple, examinons le projet Introspection/Pick : cette activité présente à
l’utilisateur un champ pouvant contenir une Uri désignant une collection (préremplie ici
avec content://contacts/people), plus un très gros bouton :
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:cursorVisible="true"
android:editable="true"
android:singleLine="true"
android:text="content://contacts/people"
/>
android:id="@+id/pick"
android:layout_width="fill_parent"
Livre Android.book Page 260 Dimanche, 8. novembre 2009 12:23 12
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
260 L’art du développement Android
Pourtant, on n’a absolument aucune idée de ce qu’il est possible de faire avec toutes
les Uri. On peut sûrement afficher tous les contenus, mais peut-on les modifier ? Peut-on les
appeler au téléphone ? En outre, l’utilisateur pouvant ajouter des applications avec des
nouveaux types de contenus à tout moment, on ne peut pas supposer connaître toutes
les combinaisons possibles en consultant simplement les applications de base fournies
avec tous les terminaux Android.
Heureusement, les concepteurs d’Android ont pensé à ce problème et ont mis à notre
disposition plusieurs moyens de présenter à nos utilisateurs un ensemble d’activités à
lancer pour une Uri donnée – même si l’on n’a aucune idée de ce que représente vraiment
cette Uri. Ce chapitre explore quelques-uns de ces outils d’introspection.
Faites votre choix
Parfois, on sait qu’une Uri représente une collection d’un certain type : on sait, par exemple, que content://contacts/people représente la liste des contacts dans le répertoire
initial des contacts. Dans ce cas, on laisse l’utilisateur choisir un contact que notre activité
pourra ensuite utiliser (pour le marquer ou l’appeler, par exemple).
Pour ce faire, on doit créer une intention ACTION_PICK sur l’Uri concernée, puis lancer
une sous-activité (par un appel à startActivityForResult()) afin que l’utilisateur
puisse choisir un contenu du type indiqué. Si notre méthode de rappel onActivityResult() pour cette requête reçoit le code résultat RESULT_OK, la chaîne de données peut
être analysée afin de produire une Uri représentant le contenu choisi.
À titre d’exemple, examinons le projet Introspection/Pick : cette activité présente à
l’utilisateur un champ pouvant contenir une Uri désignant une collection (préremplie ici
avec content://contacts/people), plus un très gros bouton :
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:layout_height="wrap_content"
android:cursorVisible="true"
android:editable="true"
android:singleLine="true"
android:text="content://contacts/people"
/>
android:id="@+id/pick"
android:layout_width="fill_parent"
Livre Android.book Page 260 Dimanche, 8. novembre 2009 12:23 12
