Routage Externe ou intention implicite
Définir une intention implicite
Lors d'un routage externe, vous n'indiquez plus la classe à atteindre (intention explicite), mais au minimum l'action que vous désirez déclencher et des données (sous forme uri).
Rien n'empêchera
d'utiliser cette solution pour lancer des activités codées dans
votre application. Mais à la différence du routage interne, rien
ne vous assurera que cette votre activité qui sera lancée plutôt
qu'une autre.
Les actions (constantes de la classe Intent par exemple Intent.ACTION_VIEW):
ACTION_VIEW pour afficher une ressource. (Exemple lancer un navigateur sur une URL)
ACTION_EDIT pour éditer une ressource.
ACTION_PICK pour choisir un élément d'une collection représenté par la donnée uri.
ACTION_DIAL pour afficher une dialogue de sélection (Le téléphone)
ACTION_CALL pour déclencher un appel (Le téléphone)
...
Les données sous forme uri, comme par exemple "tel:0102030405" (Utilisez Uri.parse() pour convertir votre chaîne de caractères url en uri).
Pour définir votre intention, vous pourrez utiliser le constructeur Intent (action);
Puis définir la donnée via Intent.setData(uri);
Ou plus rapide en utilisant le constructeur Intent (action, donnée_uri);
Vous pourrez passer d'autres critères.
- Un type MIME des données manipulées via Intent.intent.setType(MIME). Attention, les données seront supprimées après cette méthode (setData()). Il sera possible d'utiliser une méthode plus globale: data + MIME via la méthode setDataAndType() par exemple intent.setDataAndType(Uri.parse("file:///tmp/android.c"), "text/plain").
- Un composant (classe d'activité qui recevra cette intention - A éviter, car suppose que le composant soit connu et installé ! Vous n'êtes plus dans de l'implicite, mais dans de l'explicite à ce niveau !).
- Un bundle d'informations, ou des extras data passés au récepteur ( intent.putExtras(objetbunble);).
Des exemples
Comme indiqué précédemment, il y a :
Le téléphone, navigateur sur une URL, mais aussi les contacts.