Académique Documents
Professionnel Documents
Culture Documents
Chapitre 3 :
Les intents
Introduction
● Les applications Android doivent se décomposer en activités distinctes les unes des autres.
● Au sein de ces applications, les activités doivent pouvoir s'enchaîner, s'appeler, retourner à
leur activité principale.
● Pour mettre en place cette communication entre activités, Android utilise le système des
intentions.
● Celles-ci permettent d'envoyer des messages d'une activité vers une autre avec des
données pour les activer.
1
05/01/2023
Définition
● Android utilise « intent » (Intention en français) pour la communication.
● Intent est l’objet utilisé dans android pour le passage des informations entre
les activités d’une même application et il peut assurer la communication
entre les applications.
● Un intent est un message qui peut être utilisé pour demander une action à
partir d’un autre composant de l’application.
● Il permet d’invoquer des Activités, des « Broadcast Receivers » ou des
Services.
2
05/01/2023
Intent
Explicite
6
3
05/01/2023
● Un objet Intent contient des informations utilisées par le système Android pour
déterminer le composant à démarrer, ainsi que les informations que le
composant destinataire utilise pour exécuter correctement l'action à
entreprendre.
4
05/01/2023
10
5
05/01/2023
3. Quand l’Activity détecte que l’Activity2 a terminé sa tâche L’activité1 exécute la méthode
onActivityResult(int requestCode, int resultCode, Intent data) et récupère la valeur de
retour envoyée par Activity2. 11
12
6
05/01/2023
13
7
05/01/2023
Au niveau de
l’activité parente :
15
Injection de données
● Les Intents ne sont pas utilisés seulement pour démarrer une activité, elles peuvent aussi
transmettre des données d’une activité à une autre en utilisant un champ «extra» qui leur
permet de contenir des données à véhiculer entre les activités.
=> Un extra est une clé à laquelle on associe une valeur.
● Pour insérer un extra, il suffit d'utiliser la méthode suivante :
● Vous pouvez récupérer un extra précis à l'aide de sa clé et de son type en utilisant la méthode
get{X}Extra(String key, X defaultValue) (defaultValue la valeur qui sera retournée si la clé
passée ne correspond à aucun extra de l'intent).
● NB : X pour indiquer le type de la valeur (on peut y mettre un peu n'importe quel type de base,
int, String ou double[]…).
16
8
05/01/2023
Injection de données
● En revanche, pour les types un peu plus complexes tels que les tableaux, on ne peut préciser
de valeur par défaut, par conséquent on devra par exemple utiliser la méthode float[]
getFloatArrayExtra(String key) pour un tableau de float.
● Pour récupérer tous les extras d'un intent, utilisez la méthode Bundle getExtras(…).
● Exemple :
17
Exercice d’application
On veut créer une application qui calcule la somme de 2 entiers. Cette application contient 2
activités : Activity1 et Activity2.
1. Implémentez la solution en utilisant la méthode startActivity.
L’interface graphique est la suivante :
● Avec 2 EditText dont l’id est respectivement : ent1 et ent2 et 1 Button dont l’id est btn
18
9
05/01/2023
Exercice d’application
2. Implémentez la solution en utilisant la méthode startActivityForResult
L’interface graphique est la suivante :
● Avec 2 EditText dont l’id est respectivement : ent1 et ent2, 1 Button dont l’id est btn et Un
textView dont l’id est res.
19
Correction
1) Utilisation de startActivityForResult
20
10
05/01/2023
Correction
21
Correction
2) Utilisation de startActivityForResult
Avtivity1:
22
11
05/01/2023
23
Avtivity2:
24
12
05/01/2023
Avtivity2:
25
26
13
05/01/2023
Intents
Implicites
27
Introduction
Application A 2
Implicite
Activity1
Application 1
Activity2
Explicite Application 2
1
28
14
05/01/2023
Définition et utilisation
● Ne permettent pas de cibler un composant spécifique comme les intents explicites, mais
déclarent une action à réaliser.
● Ils permettent généralement d’appeler un composant d’une autre application
(exemple : navigateur web, galerie…).
● Ce système d’utilisation d’Intent implicite a recourt à des filtres comme points d’entrée
pour distribuer les intents aux composants les plus appropriés. 29
Définition et utilisation
● Un Intent permet également de demander à un composant d’une autre application de
traiter l’action que vous souhaiteriez réaliser.
● C’est le système qui décide de l’application à utiliser pour accomplir votre souhait.
30
15
05/01/2023
32
16
05/01/2023
● Exemple :
<manifest …
<uses-permission
android: name="android.permission.CALL_PHONE" />
</manifest>
33
<uses-permission
android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_HISTORY_BOOKMARKS"
34
17
05/01/2023
35
18
05/01/2023
37
Intent sms=
new Intent(Intent.ACTION_SENDTO,
Uri.parse("smsto:20111222"));
38
19
05/01/2023
Intent web=
New Intent(Intent.ACTION_VIEW,
Uri.parse("http:www.google.fr"));
39
Intent picture=
new Intent(Intent.ACTION_VIEW,
MediaStore.Images.Media.INTERNAL_CONTENT_URI);
40
20
05/01/2023
Intent contact=
new Intent(Intent.ACTION_PICK,
Uri.parse( "content://contacts/people/"));
41
42
21
05/01/2023
43
Comment lancer un
Intent implicite ?
22
05/01/2023
startActivity(Intent i) startActivityForResult
(Intent i, Integer RequestCode)
1 2
1. La méthode startActivity
23
05/01/2023
(1)
Calling Activity 2 (2)
Using Intent Receiving Data
& from Activity 1
Sending Data
(3)
(4) Sending
Receiving Data/Result
a Return from To Activity 1
Activity 2
Activity 1 Activity 2
Example
ImageView
Get a Picture
24
05/01/2023
Correction Activity 1
Correction Activity 1
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==37) {
if (resultCode==RESULT_OK) {
Uri uri=data.getData();
image.setImageURI(uri);
}
}
25