Professional Documents
Culture Documents
CHAP5
CHAP5
Les Intents
A.Hammache 1
Plan du Chapitre
Types d’intent
Intent Explicite
Intent Implicite
A.Hammache 3
Description d’un Intent
Nous pouvons considérer l’objet intent comme un “message” contenant :
Des informations nécéssaires cas explicite (exemple : Composant)
Des informations nécéssaires cas implicite (exemple : action et données).
TYPES INTENT
IMPLICITE
EXPLICITE
A.Hammache 5
Types d’Intent
Application 1 Application 2
Intent
Activité1 Activité1
explicite
Activité 2 Service
BroadcastReceiver
BroadcastReceiver,
,
implicite
ContentProvider. ContentProvider.
Description
Ou
Android .
Exception
Resolution A.Hammache 6
L’Intent explicite
• Dans l’Intent explicite, le composant récepteur (ici on traite le lancement
d’activité) est défini par le nom de composant.
• La création d’un tel Intent est réalisée ainsi:
Intent i = new Intent(Context context, Class<?> cls);
startActivity(i);
• Context : le contexte à partir duquel l’Intent est créé. Ce paramètre fait référence la plupart du
temps à l’activité en cours (this) .
• Cls : une classe Java héritant d’Activity
• startActivity() : pour lancer l’activité spécifiée dans Cls. Sans l’attente d’un résultat.
Intent i=
new Intent(getApplicationContext(), AutreActivité.class);
startActivity(i);
A.Hammache 7
L’Intent explicite (avec résultats)
• On peut aussi lancer une activité, qui retourne des résultats:
(1) :L’activité A appelle la méthode (2): L’activité B est lancée (onCreate(Bundle).)
startActivityForResult(Intent, int). En plus de L’Intent est récupéré par un appel à la méthode
l’Intent un code identifiant la requête est soumis getIntent().
Intent + CodeRequête
Activité A Activité B
CodeRequête + ResultCode + Intent
(4) :LonActivityResult(int
CodeRequête , int (3) : setResult(int) ou setResult(int,
CodeRésultat, Intent données) est appelée. Le Intent) est appelée pour retourner le résultat. La
paramètre CodeRequête est la seule façon de faire le lien méthode finish() est invoquée pour signifier la
entre les éléments de retour fournis ici et l’appel initial à la fin de l’activité B.
méthode startActivityForResult.
A.Hammache 8
L’Intent explicite (avec résultats)
PremièreActivité
SecondeActivité
Intent reçu= getIntent();
2
Intent envoi=new Intent();
envoi.putExtra("RESULTAT", 5);
3
setResult(RESULT_OK, envoi);
finish();
A.Hammache 9
Types des Intents
TYPES INTENT
IMPLICITE
EXPLICITE
A.Hammache 10
L’Intent Implicite
• Dans l’Intent Implicite le composant récepteur n’est pas défini. C’est le
système Android qui détermine le(s) composant(s) pouvant répondre à cet
intent, en utilisant : le nom de l’action, les données, la catégorie, etc.
• Les actions peuvent être prédéfinies (natives) ou définies par le
programmeur.
• La résolution d’un Intent est faite sur la base de la comparaison entre l’objet
intent et le IntentFilter de chaque composant.
• Exemple :
Uri uri=Uri.parse("tel:0662899541");
Intent appel= new Intent(Intent.ACTION_CALL, uri);
startActivity(appel);
A.Hammache 11
L’Intent Implicite
Quelques actions prédéfinies :
A.Hammache 12
L’Intent Implicite
Example d’un Intent implicite qui initialise une recherche sur le web.
A.Hammache 13
L’Intent Implicite
La Structure d’un Intent
Composant
Action La catégorie (category) est une chaîne (String)
qui spécifié le type de composant demandé.
Catégorie
void addCategory(String)
Données
Type
Extras
Flags
CATEGORY_BROWSABLE Utilisée pour indiquer qu'une activité peut être appelée depuis un navigateur web
pour afficher des données référencées par un lien.
A.Hammache 14
L’Intent Implicite
La Structure d’un Intent Extras : permet d’insérer des données
supplémentaires.
Composant Organisées sous forme de paires :
Action clé-valeur
Méthodes : void putExtras(Bundle)
Catégorie Bundle getExtras()
Données
Flags : informations additionnelles pour
Type informer Android comment lancer un
Extras composant et comment le traiter une fois
exécuté.
Flags Méthode : void addFlags(int flags)
<activity
android:name=".IntentTesterActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW"/>
<action android:name="android.intent.action.DELETE"/>
<category android:name="android.intent.category.LAUNCHER" />
<data android:mimeType="vidéo/mpeg"/>
</intent-filter>
</activity>
A.Hammache 16
Intent Résolution d’un Intent
-Action
-Catégorie Oui
-Données Filtre Filtre
Action •L’intent ne spécifie pas l’action
catégorie
Intent Filter n Intent Filter 1
•Le filtre contient au moins l’action définie Oui
-Action -Action dans le champ Action de l’intent
Non Non
-Catégorie -Catégorie
-Données -Données •Le filtre ne spécifie aucune action
Intent + RequestCode
Activité A Activité B
RequestCode + ResultCode + Intent
A.Hammache 18