iii. le concept d’activité / l’objet...

37
Programmation Android III. le concept d’Activité / l’objet Intent 1 / 42 Cours Android - F. Michel N

Upload: others

Post on 26-Sep-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Programmation AndroidIII. le concept d’Activité / l’objet

Intent

1 / 42Cours Android - F. Michel

N

Page 2: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Plan

1 La notion d’activité

2 Ajout d’une activité

3 Lancement d’une activité

4 L’objet android.content.Intent.Intent

5 Implicit Intent

2 / 42Cours Android - F. Michel

N

Page 3: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

La notion d’activité

Activity

Définition

Une activité (sous classe d’Activity) représente un unique écran del’UI d’une application Android

Une application contient en général plusieurs activités. Par exemple,une application de courriel : une activité pour la composition, uneactivité pour la lecture, indépendante l’une de l’autre.

Ces activités peuvent être lancées par d’autres applications. Parexemple pour partager une image (gallery app) via un courriel(mailer app)

Tout l’intérêt d’Android est de faciliter l’utilisation de l’ensemble descomposants présents dans le système, et donc notamment ndesdifférentes activités fournies par les applications.

4 / 42Cours Android - F. Michel

N

Page 4: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

La notion d’activité

Définition des activités d’une application

AndroidManifest.xml :

5 / 42Cours Android - F. Michel

N

Page 5: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Ajout d’une activité

Étape 1 : ajout dans le manifest

AndroidManifest.xml :

7 / 42Cours Android - F. Michel

N

Page 6: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Ajout d’une activité

Étape 2 : création de la classe implémen-tant l’activité

8 / 42Cours Android - F. Michel

N

Page 7: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Ajout d’une activité

Étape 2 : résultat

DisplayMessageActivity.java

9 / 42Cours Android - F. Michel

N

Page 8: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Ajout d’une activité

Étape 3 : création de l’UI de l’activité àl’aide d’un nouveau fichier XML (layout)

10 / 42Cours Android - F. Michel

N

Page 9: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Ajout d’une activité

Étape 3 : création de l’UI de l’activité

11 / 42Cours Android - F. Michel

N

Page 10: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Ajout d’une activité

Étape 3 : ajout d’un champ texte

12 / 42Cours Android - F. Michel

N

Page 11: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Ajout d’une activité

Étape 4 : connecter l’activité à sa vue4.1 : ajout de la méthode onCreate

DisplayMessageActivity.java

13 / 42Cours Android - F. Michel

N

Page 12: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Ajout d’une activité

Étape 4 : connecter l’activité à sa vue4.2 : spécification de la vue à utiliser

Méthode setContentView

14 / 42Cours Android - F. Michel

N

Page 13: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Ajout d’une activité

Étape 4 : connecter l’activité à sa vue4.2 : spécification de la vue à utiliser

Récupération de l’identifiant généré automatique-ment via la classe R.layout

15 / 42Cours Android - F. Michel

N

Page 14: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Lancement d’une activité

Rappel : activité Main (cours précédent)

17 / 42Cours Android - F. Michel

N

Page 15: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Lancement d’une activité

Exemple : à partir d’un bouton placé dansl’activité principale

Rappel : gestion clique solution 2

18 / 42Cours Android - F. Michel

N

Page 16: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Lancement d’une activité

Lancement de l’activité

Méthode android.app.Activity.startActivity(Intent)

19 / 42Cours Android - F. Michel

N

Page 17: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Lancement d’une activité

Lancement de l’activité

Création d’un Intent explicite, utilisation du constructeurandroid.content.Intent.Intent(Context, Class<?>)

20 / 42Cours Android - F. Michel

N

Page 18: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Lancement d’une activité

Lancement de l’activité

Création d’un Intent, utilisation du constructeurandroid.content.Intent.Intent(Context, Class<?>)

21 / 42Cours Android - F. Michel

N

Page 19: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Lancement d’une activité

Résultat : DisplayMessageActivity est dé-marée au clique sur le bouton send

22 / 42Cours Android - F. Michel

N

Page 20: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

L’objet android.content.Intent.Intent

À propos de l’objet Intent

Principes d’un Intent

moyen de lier deux composants (2 activités par exemple)

représente pour une application le désir de faire quelque chose enutilisant d’autres éléments du système (e.g. une autre activité)

android.content.Intent.Intent(Context, Class<?>)

paramètre 1 : un objet de type android.content.Context.android.app.Activity est sous classe de contexte

paramètre 2 : un objet de type java.lang.Class : la classecorrespondant au composant visé, e.g. une activité

24 / 42Cours Android - F. Michel

N

Page 21: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

L’objet android.content.Intent.Intent

À propos de l’objet Intent

L’activité principale est démarée grâce à un Intent

25 / 42Cours Android - F. Michel

N

Page 22: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

L’objet android.content.Intent.Intent

Communication de données via un Intent

android.content.Intent.putExtra(String, String)

26 / 42Cours Android - F. Michel

N

Page 23: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

L’objet android.content.Intent.Intent

Affichage des données transférées dansDisplayMessageActivity

27 / 42Cours Android - F. Michel

N

Page 24: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

L’objet android.content.Intent.Intent

Transfert des données de la vue

28 / 42Cours Android - F. Michel

N

Page 25: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

L’objet android.content.Intent.Intent

Transfert des données de la vue

29 / 42Cours Android - F. Michel

N

Page 26: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

L’objet android.content.Intent.Intent

Création d’une vue dans le code Java :nouvelle activité AfficheMessage

30 / 42Cours Android - F. Michel

N

Page 27: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

L’objet android.content.Intent.Intent

Transfert des données à AfficheMessageModification de MainActivity.java

31 / 42Cours Android - F. Michel

N

Page 28: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

L’objet android.content.Intent.Intent

Problème! ! !

32 / 42Cours Android - F. Michel

N

Page 29: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

L’objet android.content.Intent.Intent

Problème → LogCat en mode debug

33 / 42Cours Android - F. Michel

N

Page 30: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

L’objet android.content.Intent.Intent

Modification AndroidManifest.xml

34 / 42Cours Android - F. Michel

N

Page 31: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

L’objet android.content.Intent.Intent

Transfert des données à AfficheMessage

35 / 42Cours Android - F. MichelN

Page 32: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Implicit Intent

Intent implicite

Objectif d’un Intent implicite

Permet de demander au système de réaliser une action particulièresans viser une Activité spécifique

Lors de l’utilisation, Android cherche parmi les activités qui se sontenregistrées comme capable de gérer cette demande (manifest)

Si plusieurs activitées sont trouvées, il est automatiquementdemandé à l’utilisateur de choisir (“ouvrir avec”)

Exemples :

affichage d’une page webcomposition d’un mail

37 / 42Cours Android - F. Michel

N

Page 33: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Implicit Intent

Exemple : ActionView (générique)

38 / 42Cours Android - F. Michel

N

Page 34: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Implicit Intent

Précaution d’emploi

Vérification de la disponibilité d’un composant adéquat

Il est préférable de vérifier que le système est capable de gérerl’action demandée

si aucun composant ne peut gérer une demande, l’applicationinitiatrice plante !

39 / 42Cours Android - F. Michel

N

Page 35: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Implicit Intent

Enregistrer une activité comme capable degérer un Intent

Nouvelle activité : AfficheURL

40 / 42Cours Android - F. Michel

N

Page 36: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Implicit Intent

Définition d’un intent-filter dans le mani-fest

intent-filter

action : type d’action gérée par l’activité (e.g. Action.SEND,Action.VIEW)

data : le type de donnée que l’activité peut gérer (e.g.android :mimeType, android :scheme)

category : permet de spécifier plus avant le type de l’activité (pardéfaut : DEFAULT)

41 / 42Cours Android - F. Michel

N

Page 37: III. le concept d’Activité / l’objet Intentfmichel/old/ens/android/cours/android_activity.pdf · Implicit Intent Résumé global Activity définition : manifest Android création

Implicit Intent

Résumé global

Activity

définition : manifest Androidcréation / implémentation : extends android.app.Activitylancement : android.app.Activity.startActivity(Intent)

Intent

explicite : lancement d’une activité spécifiqueimplicite : demande de lancement d’un servicecommunication entre activités : android.content.Intent.putExtra(K,V)

Ce cours reprend largement les tutoriaux en ligne proposés par Google : Android developers

42 / 42Cours Android - F. Michel

N