Comment interragir avec les composants android les intents

Definition

Dans android le système gère lui-même les composants . Le développeur ne peut pas les initialiser et gérer leur cycle de vie Pour cela on envoie un messages appelé Intent pour :

  • lancer une activity
  • lancer un service
  • envoyer un evénement aux broadcast-receivers

Cela permet

  • d’un composant precis d’appeler n’importe lequel composant de tout les applications installé sur l’appareil
  • de traiter les intents l’un après l’autre sous la forme d’une file d’attente

on distingue deux type d’Intents

  • Les Intents explicite : cible directement le composant à n’appeler
  • Les Intents implicite : ne cible pas de composant , mais décrit un action à realiser , le systeme d’exploitation choisira le composant

les intent sont défine par la classe java android.content.Intent et prend comme paramètre

  • la classe d’appel en java du composant à appeler ( null si implice)
  • action : une chaine de caratère précisant l’action à réaliser ( optionnel si explice )
  • Catégorie: une ou plusieurs chaine de caratère indique le type d’intent pour distinguer les composants (optionnel)
  • data : Uri qui cible oû l’action doit porter (optionnel )
  • pubextra : ajout un couple donnée clée-valeur suplémantaire (optionnel)

Example

Example d’une déclaration d’un explicite intent

Intent( context , MyActivity::class.java  ) 

Example d’une déclaration d’un implicite intent

Intent("Mai").apply{ 
    action = Intent.ACTION_SEND
    putExtra(Intent.EXTRA_TEXT, "hello")
    type = "text/plain"

} 

Recevoir un implicite Intent dans Composant

Normalement les composant ne peuvent pas être lancer par les implicites Intents du fait que le

Pour cela il faut implémenter un intent-filter définie par

  • est implémenté par la balise <intent-filter> dans le composant sein du fichier android.manifest.xml .
  • prend comme parametre les balises <action> ,<catégorie> et <data> correspondant aux même paramête de la classe Intent

une exemple

<intent-filter>
        <action android:name="android.intent.action.SEND"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="text/plain"/>
    </intent-filter>

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *