33 votes

Android: Comprendre les filtres d'intention

Je voudrais créer un Intent-Filter, de sorte que certains liens vont déclencher le démarrage de mon application (voir ce stackoverflow-thread par exemple: Comment faire pour enregistrer quelques URL de l'espace de noms (myapp://app.start/) pour accéder à votre programme en appelant une URL dans le navigateur dans le système d'exploitation Android? )

Tout en essayant, j'ai compris, que je n'ai pas très bien comment les Intentions et l'Intention-Filtres (défini dans le Manifest.xml effectivement le travail. Quelle est la différence entre la suivante:

<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.MAIN" />

ou les éléments suivants:

<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.MAIN" />

Et ce qui est réellement la différence entre la catégorie et de l'action Intent-filter. J'ai lu cette page http://developer.android.com/reference/android/content/Intent.html mais je manque encore une compréhension de base.

90voto

Brian Cooley Points 6094

Au lieu de regarder à partir de votre application point de vue, retournez-la autour de et de le regarder à partir de l'Intention de côté.

Lorsque l'Intention est créé, le créateur n'a aucune idée de ce que les applications sont sur le système pour gérer cette Intention. Mais le créateur sait ce qu'il veut faire (par exemple, une application peut être utile de laisser l'utilisateur choisir un contact à partir de quelque part sur le dispositif), et doit tendre la main à d'autres applications sur le système pour demander ce qui est souhaité.

Pour ce faire, les Intentions ont plusieurs éléments d'information qui leur est attaché. Parmi eux, les actions et les catégories.

Les actions définissent de façon générale, l'action de l'Intention veut faire, comme l'AFFICHAGE d'un contact, CHOISISSEZ une image de la Galerie, etc.

La catégorie est une partie de l'information qui donne à l'Intention d'une autre manière de se différencier. Par exemple, lorsqu'un lien dans le navigateur est cliqué, l'Intention qui est créé a la NAVIGABLES de catégorie attaché à elle.

Ainsi, lorsque l'OS se résout à l'Intention, il va chercher les Activités enregistrées ou BroadcastReceivers qui ont un filtre d'intention qui comprend tous les éléments d'information. Si l'Intention spécifie le pic d'action, les Activités qui n'ont pas l'intention de filtre avec la reprise de l'action sera supprimé de la liste des candidats à la poignée de l'Intention.

De cette façon, l'ensemble de l'action, les catégories, le type, et (peut-être) le schéma associé avec l'Intention de servir à identifier l'ensemble des Activités qui peuvent gérer l'Intention. Lorsque vous configurez votre intent-filter dans votre manifeste, vous indiquez le système d'exploitation qui classe des Intentions que vous pouvez manipuler.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X