Université Constantine 2
Dr. CHAOUCHE A.-C.
Faculté des nouvelles technologies
ahmed.chaouche@univ-constantine2.dz
– Cours 9 –
Chapitre 6 : Evènements et intentions (2/2)
Développement d’applications mobiles
2018/2019. Semestre 1
Université Constantine 2
Etudiants concernés
Faculté/Institut Département Niveau Spécialité
2018/2019. Semestre 1
Dr. CHAOUCHE A.-C.
Faculté des nouvelles technologies
ahmed.chaouche@univ-constantine2.dz
Développement d’applications mobiles
Licence 3 Technologies de l’information (TI)Nouvelles technologies IFA
Licence 3 Science de l’informatique (SCI)Nouvelles technologies IFA
– Cours 9 –
Chapitre 6 : Evènements et intentions (2/2)
Université Constantine 2 3
Prérequis
Maîtrise de Android Studio
Création et exécution d’un projet Android
Objectifs du cours
Passer d’une activité à une autre
Transférer des données entre les activités
Détecter et résoudre des exceptions
Résumé
© Dr. Chaouche A.-C.
Université Constantine 2 4
Pile des activités (1/2)
© Dr. Chaouche A.-C.
Université Constantine 2 5
Pile des activités (2/2)
© Dr. Chaouche A.-C.
Les activités sont empilées/dépilées
Empilée quand une activité démarre
Dépilée (détruite) quand on presse le bouton "BACK"
Une pression sur le bouton "HOME" ne dépile pas l'activité (passe simplement en
arrière plan)
Université Constantine 2 6
Gérer l'envoi et la réception de messages afin de faire coopérer les
activités (ou même les applications)
Déléguer une action à un composant, une application ou une activité de
l'application courante.
3 cas d’usage principaux des intents
Pour démarrer une activité :
en utilisant startActivity(Intent), l’intent décrit l’activité et ses paramètres
Pour démarrer un service :
en appellant startService(Intent), démarrer un service (application sans IHM)
Pour envoyer un broadcast :
en utilisant sendBroadcast(Intent), un broadcast est un message que toute
application peut recevoir
Intentions
© Dr. Chaouche A.-C.
Université Constantine 2 7
Donner le nom d’une action générale
Un composant d’une autre application peut traiter l’action
Le système trouve la bonne application en utilisant les intent-filters
déclarés dans le manifest
Types d'intentions (1/2)
Intent implicite
© Dr. Chaouche A.-C.
/java/MainActivity.java
...
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:031xxxxxx"));
startActivity(intent);
Main
Intent
Système
Université Constantine 2 8
Fournir le nom de la classe de l’activité à démarrer
Les activités doivent être de la même application
Types d'intentions (2/2)
Intent explicite
© Dr. Chaouche A.-C.
/java/MainActivity.java
...
Intent intent = new Intent(this, OtherActivity.class);
startActivity(intent);
Main Other
Intent
Université Constantine 2 9
Créer une activité ModulesActivity
Après vérification des champs,
Faire le passage vers ModulesActivity
TP2b : Passage d’une activité à une autre
© Dr. Chaouche A.-C.
Université Constantine 2 10
Transfert de données
© Dr. Chaouche A.-C.
/java/OtherActivity.java
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String nom = bundle.getString("nom");
String prenom = bundle.getString("prenom");
/java/MainActivity.java
Intent intent = new Intent(this, OtherActivity.class);
Bundle bundle = new Bundle();
bundle.putString("nom", "toto");
bundle.putString("prenom", "bobo");
intent.putExtras(bundle);
startActivity(intent); Main Other
Intent
Bundle
(nom,toto)
(prenom,bobo)
Les types complexes (c-à-d les objets) doivent implémenter l’interface
Parcelable, ou Serializable
Université Constantine 2 11
Passage d’un type complexe (objet) est réalisé à travers la sérialisation
La sérialisation (Marshaling) permet de rendre un objet persistant pour
un stockage ou un échange
Sérialiser un objet consiste à le convertir en un tableau d'octets, qui
pourra être reconstitué à l'identique à la réception
Sa reconversion vers sa représentation initiale (dans la mémoire) est
appelée désérialisation (unmarshaling)
La classe de l’objet à sérialiser doit implémenter l'interface Serializable
Transfert d’objets complexes (1/2)
© Dr. Chaouche A.-C.
Obj Obj
Sérialisation Désérialisation
Réseau
Fichier
BDD
Université Constantine 2 12
Transfert d’objets complexes (2/2)
© Dr. Chaouche A.-C.
/java/OtherActivity.java
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
Module m = (Module) bundle.getSerializable("obj");
/java/MainActivity.java
Module m = new Module(...);
Intent intent = new Intent(this, OtherActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("obj", m);
intent.putExtras(bundle);
startActivity(intent);
/java/Module.java
public class Module implements Serializable {
...
}
Main Other
Intent
Bundle
(obj,[Module])
Université Constantine 2 13
Retour d’une activité
© Dr. Chaouche A.-C.
/java/OtherActivity.java
Intent intentInput = getIntent();
Bundle bundle = intentInput.getExtras();
... ... ... finish();
@Override
public void finish(){
Intent intentOutput = new Intent();
intentOutput.putExtra("result", "...");
setResult(RESULT_OK, intentOutput);
super.finish();
}
/java/MainActivity.java
Intent intentInput = new Intent(this, OtherActivity.class);
startActivityForResult(intentInput, 99);
...
protected void onActivityResult(int requestCode, int resultCode, Intent intentOutput){
if(requestCode == 99 && resultCode == RESULT_OK)){ ... }
}
Main Other
intentInput
Bundle
(result,...)
intentOutput
99
RESULT_OK
1
2
3
4
Université Constantine 2 14
Etapes :
1. Aller à Android monitor > logCat
2. S'assurer que l'appareilet l'applicationsont bien sélectionnés
3. Filtrer les Logs de type "Error"
4. Identifier l'exception et corriger le code en fonction
Détection et résolution des exceptions
© Dr. Chaouche A.-C.
4
2
1 3
Université Constantine 2 15
Faire le passage vers ModulesActivity
Transférer l'identifiant et le mot de passe dans l'Intent
Afficher l’identifiant et le mot de passe dans un TextView
TP2c : Transfert de données entre les activités
© Dr. Chaouche A.-C.
Université Constantine 2 16
Documents sont accessibles :
Plateforme e-learning de l’université Constantine 2
Lien : http://elearning.univ-constantine2.dz/
Rendus du TP 2 :
Avant le Samedi 2 décembre à 23h59
À : ac.chaouche@misc-umc.org
Nom du fichier à rendre :
DAM_TP2_G%_NOMBINOME1_NOMBINOME2.zip
(Ex : DAM_TP2_G1_CHAOUCHE_NECIBI.zip)
Le fichier zip doit contenir seulement le dossier src
Documents et Rendus
© Dr. Chaouche A.-C.
Université Constantine 2 17
Intentions :
http://vogella.developpez.com/tutoriels/android/utilisation-intents/
Sérialisation sous Android :
http://www.supinfo.com/articles/single/1550-serialisation-objet-android
Quelques liens utiles
© Dr. Chaouche A.-C.
Université Constantine 2 18
Android Developer, «Tasks and Back Stack,». Lien : https://developer.
android.com/guide/components/activities/tasks-and-back-stack.html.
Android Developer, «References - Android Plateform API 26 : Intent,». Lien:
https://developer.android.com/reference/android/content/Intent.html.
Android Developer, «Start Another Activity,». Lien : https://developer.
android.com/training/basics/firstapp/starting-activity.html.
Android Developer, «References - Android Plateform API 26 : Serializable,». Lien :
https://developer.android.com/reference/java/io/Serializable.html.
Android Developer, «References - Android Plateform API 26 : Parcelable,». Lien :
developer.android.com/reference/android/os/Parcelable.html.
C. Izuchukwu, «How to Pass Data Between Activities With Android Parcelable,» 2
Octobre 2017. Lien : https://code.tutsplus.com/tutorials/ how-to-pass-data-
between-activities-with-android-parcelable--cms-29559.
Android Developer, «Getting a Result from an Activity,». Lien :
https://developer.android.com/training/basics/intents/result.html.
Références
© Dr. Chaouche A.-C.
Université Constantine 2 19
Chapitre 7 : Vues à adaptateur et boites de dialogue
Objectifs :
Créer et manipuler des vues à adaptateur (ListView, ...)
Créer et afficher une boite de dialogue
Prochain chapitre
© Dr. Chaouche A.-C.

Applications Android - cours 9 : Intents et transfert des données

  • 1.
    Université Constantine 2 Dr.CHAOUCHE A.-C. Faculté des nouvelles technologies ahmed.chaouche@univ-constantine2.dz – Cours 9 – Chapitre 6 : Evènements et intentions (2/2) Développement d’applications mobiles 2018/2019. Semestre 1
  • 2.
    Université Constantine 2 Etudiantsconcernés Faculté/Institut Département Niveau Spécialité 2018/2019. Semestre 1 Dr. CHAOUCHE A.-C. Faculté des nouvelles technologies ahmed.chaouche@univ-constantine2.dz Développement d’applications mobiles Licence 3 Technologies de l’information (TI)Nouvelles technologies IFA Licence 3 Science de l’informatique (SCI)Nouvelles technologies IFA – Cours 9 – Chapitre 6 : Evènements et intentions (2/2)
  • 3.
    Université Constantine 23 Prérequis Maîtrise de Android Studio Création et exécution d’un projet Android Objectifs du cours Passer d’une activité à une autre Transférer des données entre les activités Détecter et résoudre des exceptions Résumé © Dr. Chaouche A.-C.
  • 4.
    Université Constantine 24 Pile des activités (1/2) © Dr. Chaouche A.-C.
  • 5.
    Université Constantine 25 Pile des activités (2/2) © Dr. Chaouche A.-C. Les activités sont empilées/dépilées Empilée quand une activité démarre Dépilée (détruite) quand on presse le bouton "BACK" Une pression sur le bouton "HOME" ne dépile pas l'activité (passe simplement en arrière plan)
  • 6.
    Université Constantine 26 Gérer l'envoi et la réception de messages afin de faire coopérer les activités (ou même les applications) Déléguer une action à un composant, une application ou une activité de l'application courante. 3 cas d’usage principaux des intents Pour démarrer une activité : en utilisant startActivity(Intent), l’intent décrit l’activité et ses paramètres Pour démarrer un service : en appellant startService(Intent), démarrer un service (application sans IHM) Pour envoyer un broadcast : en utilisant sendBroadcast(Intent), un broadcast est un message que toute application peut recevoir Intentions © Dr. Chaouche A.-C.
  • 7.
    Université Constantine 27 Donner le nom d’une action générale Un composant d’une autre application peut traiter l’action Le système trouve la bonne application en utilisant les intent-filters déclarés dans le manifest Types d'intentions (1/2) Intent implicite © Dr. Chaouche A.-C. /java/MainActivity.java ... Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:031xxxxxx")); startActivity(intent); Main Intent Système
  • 8.
    Université Constantine 28 Fournir le nom de la classe de l’activité à démarrer Les activités doivent être de la même application Types d'intentions (2/2) Intent explicite © Dr. Chaouche A.-C. /java/MainActivity.java ... Intent intent = new Intent(this, OtherActivity.class); startActivity(intent); Main Other Intent
  • 9.
    Université Constantine 29 Créer une activité ModulesActivity Après vérification des champs, Faire le passage vers ModulesActivity TP2b : Passage d’une activité à une autre © Dr. Chaouche A.-C.
  • 10.
    Université Constantine 210 Transfert de données © Dr. Chaouche A.-C. /java/OtherActivity.java Intent intent = getIntent(); Bundle bundle = intent.getExtras(); String nom = bundle.getString("nom"); String prenom = bundle.getString("prenom"); /java/MainActivity.java Intent intent = new Intent(this, OtherActivity.class); Bundle bundle = new Bundle(); bundle.putString("nom", "toto"); bundle.putString("prenom", "bobo"); intent.putExtras(bundle); startActivity(intent); Main Other Intent Bundle (nom,toto) (prenom,bobo) Les types complexes (c-à-d les objets) doivent implémenter l’interface Parcelable, ou Serializable
  • 11.
    Université Constantine 211 Passage d’un type complexe (objet) est réalisé à travers la sérialisation La sérialisation (Marshaling) permet de rendre un objet persistant pour un stockage ou un échange Sérialiser un objet consiste à le convertir en un tableau d'octets, qui pourra être reconstitué à l'identique à la réception Sa reconversion vers sa représentation initiale (dans la mémoire) est appelée désérialisation (unmarshaling) La classe de l’objet à sérialiser doit implémenter l'interface Serializable Transfert d’objets complexes (1/2) © Dr. Chaouche A.-C. Obj Obj Sérialisation Désérialisation Réseau Fichier BDD
  • 12.
    Université Constantine 212 Transfert d’objets complexes (2/2) © Dr. Chaouche A.-C. /java/OtherActivity.java Intent intent = getIntent(); Bundle bundle = intent.getExtras(); Module m = (Module) bundle.getSerializable("obj"); /java/MainActivity.java Module m = new Module(...); Intent intent = new Intent(this, OtherActivity.class); Bundle bundle = new Bundle(); bundle.putSerializable("obj", m); intent.putExtras(bundle); startActivity(intent); /java/Module.java public class Module implements Serializable { ... } Main Other Intent Bundle (obj,[Module])
  • 13.
    Université Constantine 213 Retour d’une activité © Dr. Chaouche A.-C. /java/OtherActivity.java Intent intentInput = getIntent(); Bundle bundle = intentInput.getExtras(); ... ... ... finish(); @Override public void finish(){ Intent intentOutput = new Intent(); intentOutput.putExtra("result", "..."); setResult(RESULT_OK, intentOutput); super.finish(); } /java/MainActivity.java Intent intentInput = new Intent(this, OtherActivity.class); startActivityForResult(intentInput, 99); ... protected void onActivityResult(int requestCode, int resultCode, Intent intentOutput){ if(requestCode == 99 && resultCode == RESULT_OK)){ ... } } Main Other intentInput Bundle (result,...) intentOutput 99 RESULT_OK 1 2 3 4
  • 14.
    Université Constantine 214 Etapes : 1. Aller à Android monitor > logCat 2. S'assurer que l'appareilet l'applicationsont bien sélectionnés 3. Filtrer les Logs de type "Error" 4. Identifier l'exception et corriger le code en fonction Détection et résolution des exceptions © Dr. Chaouche A.-C. 4 2 1 3
  • 15.
    Université Constantine 215 Faire le passage vers ModulesActivity Transférer l'identifiant et le mot de passe dans l'Intent Afficher l’identifiant et le mot de passe dans un TextView TP2c : Transfert de données entre les activités © Dr. Chaouche A.-C.
  • 16.
    Université Constantine 216 Documents sont accessibles : Plateforme e-learning de l’université Constantine 2 Lien : http://elearning.univ-constantine2.dz/ Rendus du TP 2 : Avant le Samedi 2 décembre à 23h59 À : ac.chaouche@misc-umc.org Nom du fichier à rendre : DAM_TP2_G%_NOMBINOME1_NOMBINOME2.zip (Ex : DAM_TP2_G1_CHAOUCHE_NECIBI.zip) Le fichier zip doit contenir seulement le dossier src Documents et Rendus © Dr. Chaouche A.-C.
  • 17.
    Université Constantine 217 Intentions : http://vogella.developpez.com/tutoriels/android/utilisation-intents/ Sérialisation sous Android : http://www.supinfo.com/articles/single/1550-serialisation-objet-android Quelques liens utiles © Dr. Chaouche A.-C.
  • 18.
    Université Constantine 218 Android Developer, «Tasks and Back Stack,». Lien : https://developer. android.com/guide/components/activities/tasks-and-back-stack.html. Android Developer, «References - Android Plateform API 26 : Intent,». Lien: https://developer.android.com/reference/android/content/Intent.html. Android Developer, «Start Another Activity,». Lien : https://developer. android.com/training/basics/firstapp/starting-activity.html. Android Developer, «References - Android Plateform API 26 : Serializable,». Lien : https://developer.android.com/reference/java/io/Serializable.html. Android Developer, «References - Android Plateform API 26 : Parcelable,». Lien : developer.android.com/reference/android/os/Parcelable.html. C. Izuchukwu, «How to Pass Data Between Activities With Android Parcelable,» 2 Octobre 2017. Lien : https://code.tutsplus.com/tutorials/ how-to-pass-data- between-activities-with-android-parcelable--cms-29559. Android Developer, «Getting a Result from an Activity,». Lien : https://developer.android.com/training/basics/intents/result.html. Références © Dr. Chaouche A.-C.
  • 19.
    Université Constantine 219 Chapitre 7 : Vues à adaptateur et boites de dialogue Objectifs : Créer et manipuler des vues à adaptateur (ListView, ...) Créer et afficher une boite de dialogue Prochain chapitre © Dr. Chaouche A.-C.