Intent sous android

 

L'intent est un message envoyé au système Android pour lui indiquer que nous avons l'intention de faire quelque chose...

Android aura alors en charge de trouver l'activité répondant au mieux à cette intention. Pour l'y aider, les classes de type "activité" doivent définir des filtres d'intentions. Cependant, si plusieurs applications répondent à nos critères, Android proposera dane une fenêtre la liste des applications, permettant ainsi à l'utilisateur de choisir celle qui lui conviendra le mieux.

Nos intentions peuvent ensuite:

- Vouloir lancer une activité interne à notre application

- Une activité/service externe à notre application

 

Voici les chapitres étudiés:

- Les filtres d'intention

  • Action
  • Catégorie
  • Mime

- Premier type d'intention: le routage en interne/intention explicite

  • Intention explicite (Intent() et startActivity())
  • Exemple de code d'appel explicite

- Second type d'intention: le routage en externe/intention implicite

  • Définir une intention implicite (Intent(action, donnée_uri), setData(), setType(), Intent.setDataAndType() et putExtra())
  • Exemple de code

- Différentes solutions pour exécuter une activité

  • Lancer une activité sans attendre d'informations en retour (startActivity())
  • Lancer une activité avec récupération d'informations en retour (startActivityForResult(), onActivityResult())
  • Récupération de résultat de l'activité appelée
  • Exemple de code

- Gérer les erreurs causées par absence d'activité répondant à l'intention

  • getPackageManager(), resolveActivity()

- Définir les mimes pour nos activités

  • Filtres sur le mime
  • Exemple de ManifestAndroid.xml

- Développer une activité exploitable par intention implicite

  • Récupération des informations de l'intention (getIntent(), getData(), getType(), ...)
  • Retourner un résultat
  • Terminer l'activité appelé
  • Exemple de code

- Forcer le choix par l'utilisateur d'une activité si plusieurs activités présentes

  • Intent.createChooser()

 

Image non trouvée !Le fait de lancer une nouvelle activité passe l'activité courante en arrière plan. Hors, il est possible que cette activité en arrière plan soit supprimée si par exemple la place en mémoire venait à manquer. Cependant, l'utilisateur peut revenir dans cette activité et doit donc retrouver l'activité dans l'état où elle se trouvait initialement. Pour éviter ces désagréments, la méthode onSaveInstanceState() est déclenchée permettant à l'activité de sauvegarder certaines informations. Cette méthode est expliquée dans le cas de la rotation de l'écran où l'activité peut se faire détruire pour prendre en compte le nouveau mode portrait/paysage.

- Installer un .apk par code

Voilà pour l'essentiel des intents qui vous permettront de comprendre la suite, il y a cependant encore des choses à dire...mais plus tard (broadcast intent et sticky intent).

 

Annexes

Dans une activité, vous pouvez récupérer l'instance de l'intention associée par getIntent().

Pour une instance d'intention, vous pouvez récupérer l'action utilisée avec la méthode intent.getAction(). Un exemple avec le broadcast receiver sur la batterie qui permet d'être informé que l'appareil est branché ou débranché d'une source d'énergie externe.