0% ont trouvé ce document utile (0 vote)
32 vues26 pages

Chapitre 3

Transféré par

khoujazied0
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
32 vues26 pages

Chapitre 3

Transféré par

khoujazied0
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Module: Développement Android

Chapitre 3: Intents

Dr. Nizar Sghaier


[Link]@[Link]
1
Rappels

• Quels sont les caractéristiques d'Android?


• Quelles sont les différentes couches de la plateforme
Android?
• Quel est le rôle de la machine Dalvik?
• Quelle est la signification de AVD et quel est son rôle?
• Quelles sont les étapes de production d'une application
Android?
• Quelle est l'extension du fichier d'installation d'une
2

application Android?
• Citer les principaux répertoires d'un projet Android. 3
INTERACTION ENTRE ACTIVITÉS

▸ Une application Android peut contenir plusieurs activités :

▸ Chaque activité utilise la méthode setContentView pour s’associer avec une


interface graphique.

▸ Les activités sont indépendantes les unes des autres, cependant, elles peuvent
collaborer pour échanger des données et des actions.

▸ Typiquement, l’une des activités est désignée comme étant la première à être
présentée à l’utilisateur quand l’application est lancée : on l’appelle l’activité de
démarrage

▸ Les activités interagissent en mode asynchrone.

3
▸ Le passage d’une activité à une autre est réalisé en demandant à l’activité en cours
d’exécuter un Intent.
INTERACTION ENTRE ACTIVITÉS

4
INTERACTION ENTRE ACTIVITÉS

5
INTERACTION ENTRE ACTIVITÉS

▸ Un intent est un message qui peut être utilisé pour demander une
action à partir d’un autre composant de l’application.

▸ Permet invoquer des Activités, des Broadcast Receivers ou des Services.


Les différentes méthodes utilisées pour appeler ces composantes sont :

▸ startActivity(intent) : lance une activité


▸ sendBroadcast(intent) : envoie un intent à tous les composants
Broadcast Receivers intéressés
▸ s t a r t S erv i ce (in t en t ) ou bindService(intent, …) : communiquent avec
un service en arrière plan.
6
INTERACTION ENTRE ACTIVITÉS

▸ Un intent comporte des informations qu’Android utilise


▸ Nom du composant (activité) à démarrer
▸ Action à réaliser : ACTION_VIEW, ACTION_SEND…
▸ Data : URI référençant la donnée sur laquelle l’action va agir
▸ Catégorie : Information sur le type de composants qui va gérer l’intent
(CATEGORY-BROWSABLE, CATEGORY-LAUNCHER…)

▸ Extras : Paires clef-valeur qui comportent des informations additionnelles


pour réaliser l’action demandée

▸ Drapeaux (Flags) : Définissent la classe qui fonctionne comme


métadonnée pour cet intent
7
INTERACTION ENTRE ACTIVITÉS

Il existe deux types d’intents :

▸ Intents Explicites

▸ Spécifient le composant à démarrer par nom (nom complet de la classe).


▸ Permettent de démarrer un composant de votre propre application, car
le nom de la classe est connu

▸ Intents Implicites

▸ Ne nomment pas un composant spécifique, mais déclarent une action à


réaliser.
▸ Permet à un composant d’une application d’appeler un composant d’une
8
autre application.
INTENTS EXPLICITE
• Démarrer un intent explicite :

• Le lancement d'une nouvelle Activity de façon explicite s'effectue en


deux lignes.

1. Intent i = new Intent([Link],[Link]).

• Activité courante Activité appelée

2. StartActivity(i)

9
INTENTS EXPLICITE

Les principaux arguments d’un Intent explicite sont :

▸ Le contexte déclenchant l’intent, soit :

▸ This, si on le lance à partir de l’activité de départ,

▸ <Activity_class_name>. this, sinon

▸ La classe destination : <Activity_class_name>.class

▸ Il est donc appelé comme suit:

▸ I n t e n t my Activity Intent = n ew I n t e n t ([Link], [Link]) ;

▸ startA ctiv ity ( my A ctiv ity I n ten t) ;


1
0
INTENTS EXPLICITE

▸ L'activité démarrée reste à l'écran jusqu'à ce que l'utilisateur appuie sur


le bouton Précédent (Back) de l'appareil.

▸ Cette activité est alors fermée (détruite) et reprise par le système.


L'activité d'origine revient au premier plan.

▸ Vous pouvez également fermer manuellement l'activité démarrée en


réponse à une action de l'utilisateur (comme un clic sur un bouton, par
exemple) avec la méthode finish().
1
1
LES EXTRATS

▸ Un extra est un couple clé/valeur, basé sur le système Bundle :

▸ La clé est l'identifiant, on peut y mettre ce qu’on veut sous la forme


d’une chaîne de caractères.

▸ La valeur est celle de la donnée. Elle sera associée à la clé.

▸ Ainsi, quand on crée un extra, on lui donne une clé et une valeur. En
revanche, à la récupération de notre extra, c’est à travers la clé qu’on
obtiendra la valeur associée.
1
2
LES EXTRATS

Intent i = new Intent(this, [Link]);


[Link]("zoneTexte", chaine); // string
[Link]("nbreDeMots", mots); // integer
startActivity(i);

Intent i = new Intent(this, [Link]);


Bundle b = new Bundle();, chaine);
[Link]("zoneTexte"
[Link]( "nbreDeMots", mots);
[Link](b);
1
3 startActivity(i);
LES EXTRATS

Intent i = getIntent();
if ([Link]("zoneTexte")){
String str = [Link]("zoneTexte");
}
int nbMots = [Link]("nbreDeMots", 0);

Intent i = getIntent();
Bundle w = [Link]();
String str = [Link]("zoneTexte");
int nb = [Link]("nbreDeMots");
1
4
LES DATAS

▸ L’envoie des données se fait à travers la méthode s e t Da t a () de la classe


Intent.

▸ SetData() prend comme arguments un objet URI, qui représente


l’emplacement de la donnée qu’on compte passer à l’intent.

▸ Un URI (Unified Resource Identifier) peut être un Url ([Link] un


numéro de téléphone ([Link] un emplacement géographique (geo://).
etc.

1
5
LES DATAS

Intent i = new Intent(this, [Link]);

// adresse URL
[Link]([Link]("[Link]

// un fichier
[Link]([Link](new File("/sdcard/[Link]")));

// un contenu data
[Link]([Link]("content://[Link]/data"));

// type personnalisé
[Link]([Link]("custom:" + dataID + buttonId));

1
6
La méthode statique [Link] permet de construire un objet URI à
partir d'une chaîne de caractères.
LES DATAS & EXTRAS

En résumé donc :

‣ dans la première activité (d'envoi), il faut :

▸ Créer l'objet d’Intent.


▸ Mettre des données ou des extras dans cet Intent.
▸ Commencer la nouvelle activité avec startActivity().
▸ Dans la deuxième activité (réception), il faut :

▸ Obtenir l'objet d’Intent avec lequel l'activité a été démarrée.


▸ Récupérer les données ou les extras de l'objet Intent.
1
7
LES DATAS Vs EXTRATS

On opte pour les intent Data quand :

▸ Nous n’allons envoyer qu’une seule information à l’activité cible.

▸ L’information envoyée peut être représenté par un URI

On opte pour les intent Extras quand :

▸ On désire envoyer plusieurs informations (de différents types en


général) à l’activité cible.

▸ Une de ces informations ne peut pas être envoyé à travers un URI.


1
8
LES DATAS Vs EXTARTS

▸ Les datas des Intents et les extras ne sont pas exclusifs.

▸ Il est possible ainsi d’utiliser des données pour un URI et des extras
pour toute information supplémentaire dont l'activité démarrée a
besoin pour traiter les données dans cet URI.

1
9
ACTIVITY FOR RESULT

▸ Pour récupérer un résultat à partir d’une autre activité, il est possible


d’établir un intent « bidirectionnel » entre deux activités.

▸ Pour ça, il faut invoquer startActivityForResult (deprecated depuis


Android) 11au lieu de StartActivity

▸ Evidemment, l’activité cible doit renvoyer un résultat une fois l’opération


réalisée.

▸ Le résultat est envoyé sous forme d’Intent.

▸ L’activité principale le recevra dans la méthode onActivityResult().


2
0
ACTIVITY FOR RESULT
• ▸ De nouvelles classes ont été créées afin de donner plus de
fonctionnalités aux activités. Ces nouvelles classes doivent être
utilisées pour remplacer l'appel de la méthode "onActivityResult".

• ▸ On doit d'abord appeler la méthode "registerForActivityResult"


qui va enregistrer le résultat en paramètres.

•▸ Cette méthode prend 2 paramètres :

• ▸ Le premier est un objet de la classe "ActivityResultContracts",


qui définit le type de données dont a besoin l'activité pour
produire le résultat et celui attendu dans le résultat de l'activité.

•▸ Le deuxième est la méthode qui sera appelée une fois l'activité


2
1
terminée.
INTENT IMPLICITE

▸ Démarrer un intent implicite :

▸ Exemple :

▸ String r eq u et e = "[Link]

▸ I n t e n t i = n e w I ntent( ) ;

▸ [Link](Intent.ACTION_VIEW); [Link]([Link](requête))

▸ startActivity(i);

Ne définit pas une application en particulier, ACTION_VIEW : action définie par le


2
Android va tenter de chercher une framework qui consiste à démarrer un
2
application s'étant définie comme capable de navigateur web sur l'Uri donnée
répondre à l'action ACTION_VIEW
INTENT IMPLICITE

▸ Les principaux arguments d’un Intent implicite sont :

▸ Action : l’action à réaliser, peut être prédéfinie (ACTION_VIEW,


ACTION_EDIT, ACTION_MAIN, etc.) ou créée par l’utilisateur.

▸ Données : Les données principales sur lesquelles on va agir, tel


qu’un url ou un numéro de téléphone à appeler.

▸ Il est donc typiquement appelé comme suit:


I n t e n t myActivityIntent = new I n t e n t (<action>, <données>) ;

2 startActivity (myActivityIntent) ;
3
INTENT IMPLICITE

▸ Un intent implicite se comporte comme suit:


▸ Activité A crée un Intent avec une action et le passe en paramètre à
startActivity
▸ Le système Android cherchent toutes les applications pour trouver
un Intent Filter qui correspond à cet Intent
▸ Quand une correspondance est trouvée, le système démarrent
l’activité (Activity B) en invoquant onCreate et en lui passant l’intent.

2
4
INTENT IMPLICITE

Exemples d’actions prédéfinies communément utilisées

2
5
EXEMPLE

2
6

Vous aimerez peut-être aussi