Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 23
Création de filtres d’intentions 245
● Un composant, c’est-à-dire la classe de l’activité supposée recevoir cette intention. Cette
utilisation des composants évite d’avoir besoin des autres propriétés de l’intention,
mais elle rend cette dernière plus fragile car elle suppose des implémentations spécifiques.
● Des "Extras", c’est-à-dire un Bundle d’autres informations que vous voulez passer au
récepteur en même temps que l’intention et dont ce dernier pourra tirer parti. Les informations utilisables par un récepteur donné dépendent du récepteur et sont (heureusement)
bien documentées.
La documentation d’Android consacrée à la classe Intent contient les listes des actions et
des catégories standard.
Routage des intentions
Comme on l’a mentionné précédemment, si le composant cible a été précisé dans l’intention, Android n’aura aucun doute sur sa destination – il lancera l’activité en question. Ce
mécanisme peut convenir si l’intention cible se trouve dans votre application, mais n’est
vraiment pas recommandé pour envoyer des intentions à d’autres applications car les noms
des composants sont globalement considérés comme privés à l’application et peuvent
donc être modifiés. Il est préférable d’utiliser les modèles d’Uri et les types MIME pour
identifier les services auxquels vous souhaitez accéder.
Si vous ne précisez pas de composant cible, Android devra trouver les activités (ou les
autres récepteurs d’intentions) éligibles pour cette intention. Vous aurez remarqué que
nous avons mis "activités" au pluriel car une activité peut très bien se résoudre en plusieurs
activités. Cette approche du routage est préférable au routage implicite.
Essentiellement, trois conditions doivent être vérifiées pour qu’une activité soit éligible
pour une intention donnée :
1. L’activité doit supporter l’action indiquée.
2. L’activité doit supporter le type MIME indiqué (s’il a été fourni).
3. L’activité doit supporter toutes les catégories nommées dans l’intention.
La conclusion est que vous avez intérêt à ce que vos intentions soient suffisamment spécifiques pour trouver le ou les bons récepteurs, mais pas plus.
Tout ceci deviendra plus clair à mesure que nous étudierons quelques exemples.
Déclarer vos intentions
Tous les composants Android qui souhaitent être prévenus par des intentions doivent
déclarer des filtres d’intention afin qu’Android sache quelles intentions devraient aller vers
quel composant. Pour ce faire, vous devez ajouter des éléments intent-filter au fichier
AndroidManifest.xml.
Livre Android.book Page 245 Dimanche, 8. novembre 2009 12:23 12
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 23
Création de filtres d’intentions 245
● Un composant, c’est-à-dire la classe de l’activité supposée recevoir cette intention. Cette
utilisation des composants évite d’avoir besoin des autres propriétés de l’intention,
mais elle rend cette dernière plus fragile car elle suppose des implémentations spécifiques.
● Des "Extras", c’est-à-dire un Bundle d’autres informations que vous voulez passer au
récepteur en même temps que l’intention et dont ce dernier pourra tirer parti. Les informations utilisables par un récepteur donné dépendent du récepteur et sont (heureusement)
bien documentées.
La documentation d’Android consacrée à la classe Intent contient les listes des actions et
des catégories standard.
Routage des intentions
Comme on l’a mentionné précédemment, si le composant cible a été précisé dans l’intention, Android n’aura aucun doute sur sa destination – il lancera l’activité en question. Ce
mécanisme peut convenir si l’intention cible se trouve dans votre application, mais n’est
vraiment pas recommandé pour envoyer des intentions à d’autres applications car les noms
des composants sont globalement considérés comme privés à l’application et peuvent
donc être modifiés. Il est préférable d’utiliser les modèles d’Uri et les types MIME pour
identifier les services auxquels vous souhaitez accéder.
Si vous ne précisez pas de composant cible, Android devra trouver les activités (ou les
autres récepteurs d’intentions) éligibles pour cette intention. Vous aurez remarqué que
nous avons mis "activités" au pluriel car une activité peut très bien se résoudre en plusieurs
activités. Cette approche du routage est préférable au routage implicite.
Essentiellement, trois conditions doivent être vérifiées pour qu’une activité soit éligible
pour une intention donnée :
1. L’activité doit supporter l’action indiquée.
2. L’activité doit supporter le type MIME indiqué (s’il a été fourni).
3. L’activité doit supporter toutes les catégories nommées dans l’intention.
La conclusion est que vous avez intérêt à ce que vos intentions soient suffisamment spécifiques pour trouver le ou les bons récepteurs, mais pas plus.
Tout ceci deviendra plus clair à mesure que nous étudierons quelques exemples.
Déclarer vos intentions
Tous les composants Android qui souhaitent être prévenus par des intentions doivent
déclarer des filtres d’intention afin qu’Android sache quelles intentions devraient aller vers
quel composant. Pour ce faire, vous devez ajouter des éléments intent-filter au fichier
AndroidManifest.xml.
Livre Android.book Page 245 Dimanche, 8. novembre 2009 12:23 12
