Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parSarah Leroy Modifié depuis plus de 6 années
1
Programmation Android Communication entre composants
Jérémy VINET IE-Concept 2017 Android-ComComposants_V1.0 – IE-Concept 2017
2
Communication entre composants
Programmation Android Communication entre composants Plan Communication entre composants Introduction Intent Intent explicite Intent implicite Android-ComComposants_V1.0 – IE-Concept 2017
3
Introduction Il est possible de faire communiquer deux activités :
Programmation Android Communication entre composants Introduction Introduction Il est possible de faire communiquer deux activités : Echange de valeurs possibles, de l’un vers l’autre et de l’autre vers la première. Il est possible que deux activités d’une même application communiquent entre elles. Il est aussi possible que deux activités inter-applications communiquent entre elles. Dans les deux cas, c’est le mécanisme d’Intent (d’intention) qui sera utilisé. Android-ComComposants_V1.0 – IE-Concept 2017
4
Intent Un intent est en fait un objet qui contient plusieurs champs.
Programmation Android Communication entre composants Intent Intent Un intent est en fait un objet qui contient plusieurs champs. La façon dont sont renseignés ces champs détermine la nature et les objectifs de l’intent. Deux types d’intent : Intent explicite Intent implicite Composant Action Catégorie Données Type Extras Flags Android-ComComposants_V1.0 – IE-Concept 2017
5
Programmation Android
Communication entre composants Intent Intent Pour qu'un intent soit dit « explicite », il suffit que son champ composant soit renseigné. Ce champ permet de définir le destinataire de l'intent, celui qui devra le gérer. Il est constitué de deux informations : le package où se situe le composant, ainsi que le nom du composant. Android-ComComposants_V1.0 – IE-Concept 2017
6
Programmation Android
Communication entre composants Intent Intent À l'opposé des intents explicites se trouvent les intents « implicites ». Dans ce cas de figure, on ne connaît pas de manière précise le destinataire de l'intent. C'est pourquoi il faut s'appliquer à renseigner d'autres champs pour laisser Android déterminer qui est capable de réceptionner cet intent. Android-ComComposants_V1.0 – IE-Concept 2017
7
Intent Exemple d’implémentation d’un intent « explicite »
Programmation Android Communication entre composants Intent Intent Exemple d’implémentation d’un intent « explicite » Android-ComComposants_V1.0 – IE-Concept 2017
8
Programmation Android
Communication entre composants Intent Intent Pour définir un Intent, il faut au moins fournir deux informations essentielles Une action, ce qu'on désire que le destinataire fasse. Un ensemble de données, sur quelles données le destinataire doit effectuer son action. Android-ComComposants_V1.0 – IE-Concept 2017
9
Programmation Android
Communication entre composants Intent Intent Il existe aussi d'autres informations, pas forcément obligatoires, mais qui ont aussi leur utilité propre le moment venu : La catégorie : permet d'apporter des informations supplémentaires sur l'action à exécuter et le type de composant qui devra gérer l'intent. Le type : pour indiquer quel est le type des données incluses. Normalement ce type est contenu dans les données, mais en précisant cet attribut vous pouvez désactiver cette vérification automatique et imposer un type particulier. Les extras : pour ajouter du contenu à vos intents afin de les faire circuler entre les composants. Les flags : permettent de modifier le comportement de l'intent. Android-ComComposants_V1.0 – IE-Concept 2017
10
Programmation Android
Communication entre composants Intent Intent Le champs extra permet de contenir des données à véhiculer entre les applications. Un extra est une clé à laquelle on associe une valeur. Pour insérer un extra, il faut utiliser la méthode : Intent putExtra( String key, value) key, est la clé de l’extra. value, est la valeur à stocker (doit être un objet sérialisable) Android-ComComposants_V1.0 – IE-Concept 2017
11
Intent Android-ComComposants_V1.0 – IE-Concept 2017
Programmation Android Communication entre composants Intent Intent Android-ComComposants_V1.0 – IE-Concept 2017
12
Programmation Android
Communication entre composants Intent Explicite Intent Explicite Pour créer un intent explicite, il suffit de donner un context qui appartienne au package où se trouve la classe de destination. Dans le cas d’une classe où la classe de départ appartient au même package que la classe de destination, on peut utiliser le contexte de la classe de départ. Android-ComComposants_V1.0 – IE-Concept 2017
13
Programmation Android
Communication entre composants Intent Explicite Intent Explicite Il existe deux façons de lancer un Intent, selon que l’on veuille que le composant de destination nous renvoie une réponse ou pas. Si vous ne vous attendez pas à ce que la nouvelle activité vous renvoie un résultat, alors vous pouvez l'appeler avec : void startActivity( Intent intent) La nouvelle activité sera indépendante de celle qui la lance. Elle entreprendra un cycle de vie normal, c’est-à-dire en commençant par un onCreate. Android-ComComposants_V1.0 – IE-Concept 2017
14
Programmation Android
Communication entre composants Intent Explicite Intent Explicite Si on souhaite un retour provenant de la seconde activité il faut lancer l’Intent en utilisant la méthode : void startActivityForResult( Intent intent, int requestCode) requestCode sera un identifiant unique différent pour chaque activité lancée par cette méthode. requestCode doit impérativement être supérieur ou égale à 0 Android-ComComposants_V1.0 – IE-Concept 2017
15
Programmation Android
Communication entre composants Intent Explicite Intent Explicite Lorsque la seconde activité s’arrêtera, la première méthode de callback qui sera rappelée dans l’activité précédente sera : void onActivityResult( int requestCode, int resultCode, Intent data) Le requestCode sera le même que celui renseigné pour lancer l’activité. Il permet donc de s’avoir qu’elle Intent a provoqué l’appel de la méthode de callback. Android-ComComposants_V1.0 – IE-Concept 2017
16
Programmation Android
Communication entre composants Intent Explicite Intent Explicite resultCode est un code renvoyé par l’activité pour indiquer comment l’activité s’est terminée. Activity.RESULT_OK si l’activité s’est terminée correctement. Activity.RESULT_CANCELED si il y a eu un problème ou qu’il n’y a pas eu de code de retour précisé. Par défaut le code renvoyé est Activity.RESULT_CANCELED, ce qui permet d’être informé si l’utilisateur a appuyé sur le bouton de retour avant que l’activité est finie de s’éxécuter. Data est un intent utilisé pour faire passer des données (utilisation des extra). Android-ComComposants_V1.0 – IE-Concept 2017
17
Programmation Android
Communication entre composants Intent Explicite Intent Explicite Pour définir un code de retour dans l’activité, il faut utiliser la méthode : void setResult( int resultCode, Intent data) resultCode et data sont ceux que l’on va retrouver dans la méthode onActivityResult( int requestCode, int resultCode, Intent data) Le resultCode servira donc à vérifier que l’activité a fonctionné correctement. Android-ComComposants_V1.0 – IE-Concept 2017
18
Intent Explicite Android-ComComposants_V1.0 – IE-Concept 2017
Programmation Android Communication entre composants Intent Explicite Intent Explicite Android-ComComposants_V1.0 – IE-Concept 2017
19
Intent Explicite Android-ComComposants_V1.0 – IE-Concept 2017
Programmation Android Communication entre composants Intent Explicite Intent Explicite Android-ComComposants_V1.0 – IE-Concept 2017
20
Programmation Android
Communication entre composants Intent Implicite Intent Implicite Envoyer une requête à un destinataire, sans savoir qui il est. Les destinataires sont soit des applications fournies par Android Calendrier Contacts SMS, … Soit par d’autres applications téléchargées sur le Play Store Facebook Twiter Snapchat, … Android-ComComposants_V1.0 – IE-Concept 2017
21
Programmation Android
Communication entre composants Intent Implicite Intent Implicite Les Intents implicites précisent l'action qui devrait être effectuée avec éventuellement les données pour cette action. Les données sont formatées grâce aux URI (Uniform Resource Identifier). La syntaxe d'un URI peut être analysée de la manière suivante (les parties entre accolades {} sont optionnelles) : <schéma> : <information> { ? <requête> } { # <fragment> } Android-ComComposants_V1.0 – IE-Concept 2017
22
Programmation Android
Communication entre composants Intent Implicite Intent Implicite L’action des Intent implicites est stockée dans l’Intent. Il s’agit d’une constante qui commence par « ACTION_ … » ACTION_MAIN : Pour indiquer qu’il s’agit du point d’entrée de l’application. ACTION_DIAL : Pour ouvrir le composeur de numéros téléphoniques. ACTION_SENDTO : Envoyer un message à quelqu’un. ACTION_VIEW : Permet de visionner une donnée. ACTION_WEB_SEARCH : Effectuer une recherche internet. … Android-ComComposants_V1.0 – IE-Concept 2017
23
Programmation Android
Communication entre composants Intent Implicite Intent Implicite Android détermine qui doit répondre à un Intent donné en analysant les filtres déclarés dans le manifeste des applications. Les filtres sont les nœuds <intent-filter> qui se trouvent entre les balises <activity></activity>. Si il n’y a pas de filtre, tous les Intent implicites seront recalés lors du test. Android-ComComposants_V1.0 – IE-Concept 2017
24
Programmation Android
Communication entre composants Intent Implicite Intent Implicite Les Intent explicites n’ayant pas de champs action, ils passent toujours le test et n’ont donc pas besoin de filtre. Il est possible d’ajouter des filtres de category afin d’affiner l’utilisation des Intent. GATEGORY_DEFAULT : traitement par défaut. CATEGORY_BROWSABLE : peut être appelé depuis un navigateur web. CATEGORY_TAB : pour les activités que l’on retrouve dans des onglets. CATEGORY_LAUNCHER : doit s’afficher dans le lanceur d’application. Android-ComComposants_V1.0 – IE-Concept 2017
25
Programmation Android
Communication entre composants Ressources Ressources activity.html Android-ComComposants_V1.0 – IE-Concept 2017
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.