SlideShare uma empresa Scribd logo
1 de 10
Baixar para ler offline
M.Houssem LAHIANI 
1 
Cours de programmation sous Android 
Responsable de matière : Monsieur Houssem Lahiani. 
Chapitre 4 : Les intents sous Android 
Plan du chapitre 
Cours de programmation sous Android .............................................................................................................................. 1 
Chapitre 4 : Les intents sous Android ................................................................................................................................. 2 
I. Types de transmission d'Intent ............................................................................................................................... 2 
II. Structure d'un Intent ............................................................................................................................................... 2 
III. Actions d'Intent prédéfinies ................................................................................................................................ 2 
IV. Intent Filter .......................................................................................................................................................... 3 
V. Les différents types d'Intents .................................................................................................................................. 3 
VI. Transfert de données entre activités .................................................................................................................. 4 
VII. Exercice : Utilisation des Intent de passer d'une activité à l'autre envoyer des données via putExtra ........... 5
M.Houssem LAHIANI 
2 
Chapitre 4 : Les intents sous Android 
Les Intents sont des messages asynchrones qui permettent aux composants d'une application de demander des fonctionnalités à d’autres composants Android. Les Intents vous permettent d'interagir avec vos propres composants ou des composants d'autres applications. Par exemple, une activité peut démarrer une autre activité pour prendre une photo. 
Les Intents sont des objets de type android.content.Intent. Votre code peut les envoyer au système Android pour définir les composants que vous ciblez. Par exemple à travers la méthode startActivity(), vous pouvez définir que cet Intent doit être utilisé pour démarrer une activité. 
Un Intent peut avoir des données dans un Bundle. Ces données peuvent être utilisées par le composant qui traite l'Intent. 
I. Types de transmission d'Intent 
 Unicast: vers un composant explicitement nommé :vers une classe Java. 
 Anycast: vers un composant assurant une certaine action (visualisation, édition, launcher, ...) sur certain type de données. 
 Multicast: diffusion vers des recepteur de broadcast inscrit pour recevoir un type d'Intent. 
 Par défaut, la communication est uni-directionnel, mais on peut répondre à un Intent par un autre Intent. 
II. Structure d'un Intent 
 Un Intent est constitué de : 
– Action à réaliser 
– Donnée sur laquelle réaliser l'action sous forme d'URI (setData()) ou d'un type MIME (setType()) 
– Paramètre optionnels (EXTRA) 
 Création d'un Intent 
– Intent(Context, Class<?>) pour l'appels explicite 
– Intent(String action, URI) pour l'appel implicite 
– addCategory(String category) ajout de catégories 
– putExtra(String key,value) 
– setFlags(flags) permission sur les données, relation activité/BackStack. 
III. Actions d'Intent prédéfinies 
ACTION_MAIN: action principale 
ACTION_VIEW: visualiser une donnée
M.Houssem LAHIANI 
3 
ACTION_ATTACH_DATAT: attachement de donnée 
ACTION_EDIT: Edition de donnée 
ACTION_PICK: Choisir un répertoire de donnée 
ACTION_CHOOSER: menu de choix pour l'utilisateur 
– EXTRA_INTENT contient l'Intent original, EXTRA_TITLE le titre du menu 
ACTION_GET_CONTENT: obtenir un contenu suivant un type MIME 
ACTION_SEND: envoyé un message (EXTRA_TEXT|EXTRA_STREAM) à un destinataire non spécifié 
ACTION_SEND_TO: on spécifie le destinataire dans l'URI 
ACTION_INSERT: on ajoute un élement virge dans le répertoire spécifié par l'URI 
ACTION_DELETE: on supprime l'élement désigné par l'URI 
ACTION_PICK_ACTIVITY: menu de sélection selon l'EXTRA_INTENT mais ne lance pas l'activité 
ACTION_SEARCH: effectue une recherche 
etc. 
IV. Intent Filter 
Définie dans le AndroidManifest.xml dans la balise <activity> 
Nom de l'action 
<action android:name=”XXX”/> 
Category 
<category android:name=”XXX”/> 
Android.intent.category.[DEFAULT|BROWSABLE|TAB| 
ALTERNATIVE|LAUNCHER|HOME|PREFERENCE|TEST] 
Type MIME 
<category android:mimeType=”XXX”/> 
Exemples 
 Définir l’activité principale qui se lance en premier lieu dans l’application 
<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 
 Mon activité sait lire et éditer les images JPEG 
<intent-filter android:label="@string/jpeg_editor"> 
<action android:name="android.intent.action.VIEW" /> 
<action android:name="android.intent.action.EDIT" /> 
<data android:mimeType="image/jpeg" /> 
</intent-filter> 
V. Les différents types d'Intents 
Android supporte les Intents explicites et implicites. 
Une application peut définir les composants cibles directement dans l'Intent (Intent explicite) ou demander au système Android de rechercher le composant adéquat en se basant sur les données de l'Intent (Intent implicite).
M.Houssem LAHIANI 
4 
1. Les Intents explicites 
Les Intents explicites définissent explicitement le composant qui doit être appelé par le système Android en utilisant le nom de classe Java comme identifiant. 
L'exemple suivant montre comment créer un Intent explicite et comment l'envoyer au système Android. Si cette classe représente une activité, le système Android la démarrera. 
Intent i = new Intent(this, ActivityTwo.class); 
//Envoi de données à la seconde activité 
i.putExtra("Value1", "This value one for ActivityTwo "); 
i.putExtra("Value2", "This value two for ActivityTwo"); 
//Pour démarrer l’intent 
i.startActivity(i); 
Les Intents explicites sont généralement utilisés au sein d'une application car les classes de cette application sont contrôlées par le développeur de l'application. 
2. Les Intents implicites 
Les Intents implicites précisent l'action qui devrait être effectuée avec éventuellement les données pour cette action. 
Par exemple, ce qui suit indique au système Android d'afficher une page Web. Tous les navigateurs Web installés doivent être enregistrés avec l'Intent correspondant en utilisant un Intent Filter. 
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("http://houssem-lahiani.blogspot.com/")); 
startActivity(i); 
Si un Intent explicite est envoyé au système Android, il recherche tous les composants qui sont enregistrés avec l'action spécifique et le type de données approprié. 
VI. Transfert de données entre activités 
Un Intent contient l'action et éventuellement des données complémentaires. Le composant qui crée l'Intent peut y ajouter des données avec la méthode surchargée putExtra(). Les données supplémentaires sont des paires clé/valeur, la clé est toujours une chaîne. En valeur, vous pouvez utiliser les types de données primitifs (int, float, ..) ainsi que les types String, Bundle, Parcelable et Serializable. 
Le composant récepteur peut accéder à ces informations avec les méthodes getAction() et getData() sur l'objet Intent. Cet objet Intent peut être récupéré avec la méthode getIntent(). 
Le composant qui reçoit l'Intent peut utiliser la méthode getIntent().getExtras () pour obtenir les données supplémentaires. 
Bundle extras = getIntent().getExtras(); 
if (extras == null) { 
return; 
} 
// Get data via the key 
String value1 = extras.getString(Intent.EXTRA_TEXT); 
if (value1 != null) {}
M.Houssem LAHIANI 
5 
VII. Exercice : Utilisation des Intents pour passer d'une activité à une autre et envoyer des données via putExtra 
Dans cet exercice, nous allons voir comment passer d'une activité à une autre en envoyant des données après avoir cliqué sur le bouton. Créez un nouveau projet dans votre éclipse (File ==> New ==> Android Application Poject) et donner le nom de «Intention» de votre projet. 
Dans votre activity_main.xml mettez ce code: 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="${relativePackage}.${activityClass}" > 
<Button 
android:id="@+id/intent" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentLeft="true" 
android:layout_alignParentRight="true" 
android:layout_alignParentTop="true" 
android:text="Click me !" /> 
</RelativeLayout> 
Dans votre classe MainActivity.java mettez ce code : 
public class MainActivity extends Activity { 
Button btn; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
btn=(Button)findViewById(R.id.intent); 
btn.setOnClickListener(new OnClickListener() { 
@Override 
public void onClick(View v) { 
// TODO Auto-generated method stub 
} 
}); 
}}
M.Houssem LAHIANI 
6 
Maintenant, ajoutez « a new android xml file » dans votre dossier layout et donnez lui le nom de second_activity.xml: Faites un clic droit sur le dossier layout ==> New ==> Android XML File. 
Mettez ce code dans votre fichier second_activity.xml: 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 
<TextView 
android:id="@+id/text" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:text="TextView" /> 
</LinearLayout> 
Après cela ajouter une nouvelle activité (classe java) dans votre package situé dans le dossier src et donnez-lui ce nom : «Second». 
Cette nouvelle classe (Second.java) dans laquelle nous pouvons faire appel à notre interface avec setContentView (View) doit hériter de la classe Activity et doit contenir la méthode "onCreate()" pour appeler (avec setContentView(View)) notre layout "second_activity.xml "récemment ajouté. 
La classe Second.java doit contenir ce code : 
public class Second extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.second_activity); 
}} 
N'oubliez pas de déclarer votre nouvelle activité (Second) dans le fichier AndroidManifest.xml. 
A l'intérieur de la balise XML <application> .... </ application> du fichier AndroidManifest.xml mettez ce code : 
<activity 
android:name=".Second" 
android:label="@string/app_name" > 
</activity>
M.Houssem LAHIANI 
7 
Votre AndroidManifest.xml sera semblable à ce code : 
<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.intention" 
android:versionCode="1" 
android:versionName="1.0" > 
<uses-sdk 
android:minSdkVersion="8" 
android:targetSdkVersion="21" /> 
<application 
android:allowBackup="true" 
android:icon="@drawable/ic_launcher" 
android:label="@string/app_name" 
android:theme="@style/AppTheme" > 
<activity 
android:name=".MainActivity" 
android:label="@string/app_name" > 
<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 
</activity> 
<activity 
android:name=".Second" 
android:label="@string/app_name" > 
</activity> 
</application> 
</manifest>
M.Houssem LAHIANI 
8 
Maintenant, ce que nous voulons faire est de passer de la "MainActivity" à "Second", nous devons utiliser une intent pour le faire. 
Alors maintenant, nous devons ajouter ces deux lignes dans la methode onClick () de notre bouton pour passer de MainActivity à Second : 
public class MainActivity extends Activity { 
Button btn; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
btn=(Button)findViewById(R.id.intent); 
btn.setOnClickListener(new OnClickListener() { 
@Override 
public void onClick(View v) { 
// TODO Auto-generated method stub 
Intent intention = new Intent(MainActivity.this, Second.class); 
startActivity(intention); 
} 
}); 
} 
} 
Maintenant, exécutez votre projet et vous verrez ce qui se passera lorsque vous cliquez sur le bouton "Click me!". 
Mais si nous voulons envoyer des données de l'activité principale de la deuxième activité que ferons-nous ? 
Nous allons créer une variable de type String dans le MainActivity.java dans laquelle nous allons mettre un texte. 
Ce texte doit être affiché dans un toast après le déplacement de la première activité vers la seconde .Donc la valeur de cette chaîne doit être envoyé dans l’Intent avec la méthode "putExtra". 
Nous allons commencer par déclarer notre variable de type String. 
String value="Hello World!!!!"; 
Nous devons mettre cette variable dans notre méthode putExtra () après la déclaration de l’Intent. 
intention.putExtra("send", value);
M.Houssem LAHIANI 
9 
Le composant qui crée l'Intent peut y ajouter des données avec la méthode surchargée putExtra(). Les données supplémentaires sont des paires clé ("send")/valeur(value), la clé est toujours une chaîne. En valeur, vous pouvez utiliser les types de données primitifs (int, float, ..) ainsi que les types String, Bundle, Parcelable et Serializable. Notre MainActivity aura ce code : public class MainActivity extends Activity { Button btn; String value="Hello World!!!!"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.intent); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intention = new Intent(MainActivity.this, Second.class); intention.putExtra("send", value); startActivity(intention); } });}} La question se pose maintenant : comment la classe "Second.java" pourrait récupérer les données qui ont été envoyées ? Nous devons créer un Bundle dans la classe Second.java pour récupérer les valeurs provenant de la classe « MainActivity.java ». 
Bundle extras= getIntent().getExtras(); 
getExtras():récupère les données qui ont été ajouté à l'aide putExtra (). 
getIntent () retourne l'Intent qui a démarré cette activité. 
Après ceci, nous devons créer une variable de type String pour avoir la chaîne passée avec l'Intent et par la suite nous allons créer un Toast pour nous montrer le contenu de cette chaîne. 
if(extras != null) 
{ 
String newString=extras.getString("send"); 
Toast.makeText(Second.this,newString, Toast.LENGTH_LONG).show(); }
M.Houssem LAHIANI 
10 
Donc le code que la classe Second.java doit contenir ressemble à ceci : 
public class Second extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.second_activity); 
Bundle extras= getIntent().getExtras(); 
if(extras != null) 
{ 
String newString=extras.getString("send"); 
Toast.makeText(Second.this,newString, Toast.LENGTH_LONG).show(); 
} 
} 
}

Mais conteúdo relacionado

Mais procurados

Chp5 - Applications Android
Chp5 - Applications AndroidChp5 - Applications Android
Chp5 - Applications AndroidLilia Sfaxi
 
Administration Base de données Oracle
Administration Base de données OracleAdministration Base de données Oracle
Administration Base de données OracleAndrianaivo Lovatiana
 
Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menusLilia Sfaxi
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)Heithem Abbes
 
Applications Android - cours 7 : Ressources et adaptation au matériel
Applications Android - cours 7 : Ressources et adaptation au matérielApplications Android - cours 7 : Ressources et adaptation au matériel
Applications Android - cours 7 : Ressources et adaptation au matérielAhmed-Chawki Chaouche
 
Les règles de passage
Les règles de passageLes règles de passage
Les règles de passagemarwa baich
 
Chp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées ServicesChp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées ServicesLilia Sfaxi
 
Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)Ahmed-Chawki Chaouche
 
eServices-Tp3: esb
eServices-Tp3: esbeServices-Tp3: esb
eServices-Tp3: esbLilia Sfaxi
 
Android-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursAndroid-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursLilia Sfaxi
 
Les architectures client serveur
Les architectures client serveurLes architectures client serveur
Les architectures client serveurAmeni Ouertani
 
Alphorm.com Formation CEHV9 I
Alphorm.com Formation CEHV9 IAlphorm.com Formation CEHV9 I
Alphorm.com Formation CEHV9 IAlphorm
 
Chp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesChp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesLilia Sfaxi
 
Applications Android - cours 9 : Intents et transfert des données
Applications Android - cours 9 : Intents et transfert des donnéesApplications Android - cours 9 : Intents et transfert des données
Applications Android - cours 9 : Intents et transfert des donnéesAhmed-Chawki Chaouche
 
Applications Android - cours 10 : Vues à adaptateur
Applications Android - cours 10 : Vues à adaptateurApplications Android - cours 10 : Vues à adaptateur
Applications Android - cours 10 : Vues à adaptateurAhmed-Chawki Chaouche
 
Initiation à Android
Initiation à AndroidInitiation à Android
Initiation à AndroidLilia Sfaxi
 

Mais procurados (20)

Chp5 - Applications Android
Chp5 - Applications AndroidChp5 - Applications Android
Chp5 - Applications Android
 
Administration Base de données Oracle
Administration Base de données OracleAdministration Base de données Oracle
Administration Base de données Oracle
 
Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menus
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)
 
Applications Android - cours 7 : Ressources et adaptation au matériel
Applications Android - cours 7 : Ressources et adaptation au matérielApplications Android - cours 7 : Ressources et adaptation au matériel
Applications Android - cours 7 : Ressources et adaptation au matériel
 
Les règles de passage
Les règles de passageLes règles de passage
Les règles de passage
 
Tp n 3 linux
Tp n 3 linuxTp n 3 linux
Tp n 3 linux
 
Programmation sous Android
Programmation sous AndroidProgrammation sous Android
Programmation sous Android
 
Tp n 5 linux
Tp n 5 linuxTp n 5 linux
Tp n 5 linux
 
Cours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observerCours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observer
 
Chp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées ServicesChp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées Services
 
Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)Applications Android - cours 3 : Android Studio (Outil de développement)
Applications Android - cours 3 : Android Studio (Outil de développement)
 
eServices-Tp3: esb
eServices-Tp3: esbeServices-Tp3: esb
eServices-Tp3: esb
 
Android-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateursAndroid-Tp2: liste et adaptateurs
Android-Tp2: liste et adaptateurs
 
Les architectures client serveur
Les architectures client serveurLes architectures client serveur
Les architectures client serveur
 
Alphorm.com Formation CEHV9 I
Alphorm.com Formation CEHV9 IAlphorm.com Formation CEHV9 I
Alphorm.com Formation CEHV9 I
 
Chp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications MobilesChp2 - Conception UX-UI des Applications Mobiles
Chp2 - Conception UX-UI des Applications Mobiles
 
Applications Android - cours 9 : Intents et transfert des données
Applications Android - cours 9 : Intents et transfert des donnéesApplications Android - cours 9 : Intents et transfert des données
Applications Android - cours 9 : Intents et transfert des données
 
Applications Android - cours 10 : Vues à adaptateur
Applications Android - cours 10 : Vues à adaptateurApplications Android - cours 10 : Vues à adaptateur
Applications Android - cours 10 : Vues à adaptateur
 
Initiation à Android
Initiation à AndroidInitiation à Android
Initiation à Android
 

Destaque

Introduction à Android
Introduction à AndroidIntroduction à Android
Introduction à AndroidYoann Gotthilf
 
Les vues (views) sous android
Les vues (views) sous androidLes vues (views) sous android
Les vues (views) sous androidHoussem Lahiani
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidHoussem Lahiani
 
Android pour les debutants
Android pour les debutantsAndroid pour les debutants
Android pour les debutantsAmira Hakim
 
NodeJs, une introduction
NodeJs, une introductionNodeJs, une introduction
NodeJs, une introductionToxicode
 
Tutorial android - créer des apps
Tutorial android - créer des appsTutorial android - créer des apps
Tutorial android - créer des appsNoé Breiss
 
01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)TECOS
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidHoussem Lahiani
 
Formation Android (Initiation à la programmation sous Android)
Formation Android (Initiation à la programmation sous Android)Formation Android (Initiation à la programmation sous Android)
Formation Android (Initiation à la programmation sous Android)G²FOSS ENIT
 
Alphorm.com Formation Windev Mobile 19, Android
Alphorm.com Formation Windev Mobile 19, AndroidAlphorm.com Formation Windev Mobile 19, Android
Alphorm.com Formation Windev Mobile 19, AndroidAlphorm
 
Alphorm.com Formation Android 5
Alphorm.com Formation Android 5Alphorm.com Formation Android 5
Alphorm.com Formation Android 5Alphorm
 
Introduction au développement iOS par Pascal Batty - 131112
Introduction au développement iOS par Pascal Batty - 131112Introduction au développement iOS par Pascal Batty - 131112
Introduction au développement iOS par Pascal Batty - 131112SOAT
 
Enib cours c.a.i. web - séance #6 : introduction à node js
Enib   cours c.a.i. web - séance #6 : introduction à node jsEnib   cours c.a.i. web - séance #6 : introduction à node js
Enib cours c.a.i. web - séance #6 : introduction à node jsHoracio Gonzalez
 
Développement Android
Développement AndroidDéveloppement Android
Développement AndroidFranck SIMON
 

Destaque (19)

Introduction à Android
Introduction à AndroidIntroduction à Android
Introduction à Android
 
Les vues (views) sous android
Les vues (views) sous androidLes vues (views) sous android
Les vues (views) sous android
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'Android
 
Android wear
Android wearAndroid wear
Android wear
 
Android pour les debutants
Android pour les debutantsAndroid pour les debutants
Android pour les debutants
 
Cours 1 Android
Cours 1 AndroidCours 1 Android
Cours 1 Android
 
NodeJs, une introduction
NodeJs, une introductionNodeJs, une introduction
NodeJs, une introduction
 
Android
AndroidAndroid
Android
 
Tutorial android - créer des apps
Tutorial android - créer des appsTutorial android - créer des apps
Tutorial android - créer des apps
 
Android pour l'industrie
Android pour l'industrieAndroid pour l'industrie
Android pour l'industrie
 
01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)
 
Cycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'AndroidCycle de vie d'activité Android et les composant d'Android
Cycle de vie d'activité Android et les composant d'Android
 
Formation Android (Initiation à la programmation sous Android)
Formation Android (Initiation à la programmation sous Android)Formation Android (Initiation à la programmation sous Android)
Formation Android (Initiation à la programmation sous Android)
 
Alphorm.com Formation Windev Mobile 19, Android
Alphorm.com Formation Windev Mobile 19, AndroidAlphorm.com Formation Windev Mobile 19, Android
Alphorm.com Formation Windev Mobile 19, Android
 
Alphorm.com Formation Android 5
Alphorm.com Formation Android 5Alphorm.com Formation Android 5
Alphorm.com Formation Android 5
 
Introduction au développement iOS par Pascal Batty - 131112
Introduction au développement iOS par Pascal Batty - 131112Introduction au développement iOS par Pascal Batty - 131112
Introduction au développement iOS par Pascal Batty - 131112
 
Enib cours c.a.i. web - séance #6 : introduction à node js
Enib   cours c.a.i. web - séance #6 : introduction à node jsEnib   cours c.a.i. web - séance #6 : introduction à node js
Enib cours c.a.i. web - séance #6 : introduction à node js
 
Développement Android
Développement AndroidDéveloppement Android
Développement Android
 
Développement Sous Android
Développement Sous AndroidDéveloppement Sous Android
Développement Sous Android
 

Semelhante a Les intents sous Android (20)

Les Activités.pdf
Les Activités.pdfLes Activités.pdf
Les Activités.pdf
 
TP_1.pdf
TP_1.pdfTP_1.pdf
TP_1.pdf
 
5.ateliers avancés
5.ateliers avancés5.ateliers avancés
5.ateliers avancés
 
Android: Les intents
Android: Les intentsAndroid: Les intents
Android: Les intents
 
Chapitre 5 android
Chapitre 5 androidChapitre 5 android
Chapitre 5 android
 
Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015
 
Android introvf
Android introvfAndroid introvf
Android introvf
 
Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.
 
My droid
My droidMy droid
My droid
 
Android2017 cours2
Android2017 cours2Android2017 cours2
Android2017 cours2
 
Chap android
Chap androidChap android
Chap android
 
Ch2. Développement mobile
Ch2. Développement mobileCh2. Développement mobile
Ch2. Développement mobile
 
Tutorial android
Tutorial androidTutorial android
Tutorial android
 
Développement d’extensions WordPress
Développement d’extensions WordPressDéveloppement d’extensions WordPress
Développement d’extensions WordPress
 
Détection des mobiles
Détection des mobilesDétection des mobiles
Détection des mobiles
 
Chapitre 4 android
Chapitre 4 androidChapitre 4 android
Chapitre 4 android
 
Chapitre 2 android
Chapitre 2 androidChapitre 2 android
Chapitre 2 android
 

Les intents sous Android

  • 1. M.Houssem LAHIANI 1 Cours de programmation sous Android Responsable de matière : Monsieur Houssem Lahiani. Chapitre 4 : Les intents sous Android Plan du chapitre Cours de programmation sous Android .............................................................................................................................. 1 Chapitre 4 : Les intents sous Android ................................................................................................................................. 2 I. Types de transmission d'Intent ............................................................................................................................... 2 II. Structure d'un Intent ............................................................................................................................................... 2 III. Actions d'Intent prédéfinies ................................................................................................................................ 2 IV. Intent Filter .......................................................................................................................................................... 3 V. Les différents types d'Intents .................................................................................................................................. 3 VI. Transfert de données entre activités .................................................................................................................. 4 VII. Exercice : Utilisation des Intent de passer d'une activité à l'autre envoyer des données via putExtra ........... 5
  • 2. M.Houssem LAHIANI 2 Chapitre 4 : Les intents sous Android Les Intents sont des messages asynchrones qui permettent aux composants d'une application de demander des fonctionnalités à d’autres composants Android. Les Intents vous permettent d'interagir avec vos propres composants ou des composants d'autres applications. Par exemple, une activité peut démarrer une autre activité pour prendre une photo. Les Intents sont des objets de type android.content.Intent. Votre code peut les envoyer au système Android pour définir les composants que vous ciblez. Par exemple à travers la méthode startActivity(), vous pouvez définir que cet Intent doit être utilisé pour démarrer une activité. Un Intent peut avoir des données dans un Bundle. Ces données peuvent être utilisées par le composant qui traite l'Intent. I. Types de transmission d'Intent  Unicast: vers un composant explicitement nommé :vers une classe Java.  Anycast: vers un composant assurant une certaine action (visualisation, édition, launcher, ...) sur certain type de données.  Multicast: diffusion vers des recepteur de broadcast inscrit pour recevoir un type d'Intent.  Par défaut, la communication est uni-directionnel, mais on peut répondre à un Intent par un autre Intent. II. Structure d'un Intent  Un Intent est constitué de : – Action à réaliser – Donnée sur laquelle réaliser l'action sous forme d'URI (setData()) ou d'un type MIME (setType()) – Paramètre optionnels (EXTRA)  Création d'un Intent – Intent(Context, Class<?>) pour l'appels explicite – Intent(String action, URI) pour l'appel implicite – addCategory(String category) ajout de catégories – putExtra(String key,value) – setFlags(flags) permission sur les données, relation activité/BackStack. III. Actions d'Intent prédéfinies ACTION_MAIN: action principale ACTION_VIEW: visualiser une donnée
  • 3. M.Houssem LAHIANI 3 ACTION_ATTACH_DATAT: attachement de donnée ACTION_EDIT: Edition de donnée ACTION_PICK: Choisir un répertoire de donnée ACTION_CHOOSER: menu de choix pour l'utilisateur – EXTRA_INTENT contient l'Intent original, EXTRA_TITLE le titre du menu ACTION_GET_CONTENT: obtenir un contenu suivant un type MIME ACTION_SEND: envoyé un message (EXTRA_TEXT|EXTRA_STREAM) à un destinataire non spécifié ACTION_SEND_TO: on spécifie le destinataire dans l'URI ACTION_INSERT: on ajoute un élement virge dans le répertoire spécifié par l'URI ACTION_DELETE: on supprime l'élement désigné par l'URI ACTION_PICK_ACTIVITY: menu de sélection selon l'EXTRA_INTENT mais ne lance pas l'activité ACTION_SEARCH: effectue une recherche etc. IV. Intent Filter Définie dans le AndroidManifest.xml dans la balise <activity> Nom de l'action <action android:name=”XXX”/> Category <category android:name=”XXX”/> Android.intent.category.[DEFAULT|BROWSABLE|TAB| ALTERNATIVE|LAUNCHER|HOME|PREFERENCE|TEST] Type MIME <category android:mimeType=”XXX”/> Exemples  Définir l’activité principale qui se lance en premier lieu dans l’application <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>  Mon activité sait lire et éditer les images JPEG <intent-filter android:label="@string/jpeg_editor"> <action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.EDIT" /> <data android:mimeType="image/jpeg" /> </intent-filter> V. Les différents types d'Intents Android supporte les Intents explicites et implicites. Une application peut définir les composants cibles directement dans l'Intent (Intent explicite) ou demander au système Android de rechercher le composant adéquat en se basant sur les données de l'Intent (Intent implicite).
  • 4. M.Houssem LAHIANI 4 1. Les Intents explicites Les Intents explicites définissent explicitement le composant qui doit être appelé par le système Android en utilisant le nom de classe Java comme identifiant. L'exemple suivant montre comment créer un Intent explicite et comment l'envoyer au système Android. Si cette classe représente une activité, le système Android la démarrera. Intent i = new Intent(this, ActivityTwo.class); //Envoi de données à la seconde activité i.putExtra("Value1", "This value one for ActivityTwo "); i.putExtra("Value2", "This value two for ActivityTwo"); //Pour démarrer l’intent i.startActivity(i); Les Intents explicites sont généralement utilisés au sein d'une application car les classes de cette application sont contrôlées par le développeur de l'application. 2. Les Intents implicites Les Intents implicites précisent l'action qui devrait être effectuée avec éventuellement les données pour cette action. Par exemple, ce qui suit indique au système Android d'afficher une page Web. Tous les navigateurs Web installés doivent être enregistrés avec l'Intent correspondant en utilisant un Intent Filter. Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("http://houssem-lahiani.blogspot.com/")); startActivity(i); Si un Intent explicite est envoyé au système Android, il recherche tous les composants qui sont enregistrés avec l'action spécifique et le type de données approprié. VI. Transfert de données entre activités Un Intent contient l'action et éventuellement des données complémentaires. Le composant qui crée l'Intent peut y ajouter des données avec la méthode surchargée putExtra(). Les données supplémentaires sont des paires clé/valeur, la clé est toujours une chaîne. En valeur, vous pouvez utiliser les types de données primitifs (int, float, ..) ainsi que les types String, Bundle, Parcelable et Serializable. Le composant récepteur peut accéder à ces informations avec les méthodes getAction() et getData() sur l'objet Intent. Cet objet Intent peut être récupéré avec la méthode getIntent(). Le composant qui reçoit l'Intent peut utiliser la méthode getIntent().getExtras () pour obtenir les données supplémentaires. Bundle extras = getIntent().getExtras(); if (extras == null) { return; } // Get data via the key String value1 = extras.getString(Intent.EXTRA_TEXT); if (value1 != null) {}
  • 5. M.Houssem LAHIANI 5 VII. Exercice : Utilisation des Intents pour passer d'une activité à une autre et envoyer des données via putExtra Dans cet exercice, nous allons voir comment passer d'une activité à une autre en envoyant des données après avoir cliqué sur le bouton. Créez un nouveau projet dans votre éclipse (File ==> New ==> Android Application Poject) et donner le nom de «Intention» de votre projet. Dans votre activity_main.xml mettez ce code: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="${relativePackage}.${activityClass}" > <Button android:id="@+id/intent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:text="Click me !" /> </RelativeLayout> Dans votre classe MainActivity.java mettez ce code : public class MainActivity extends Activity { Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.intent); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub } }); }}
  • 6. M.Houssem LAHIANI 6 Maintenant, ajoutez « a new android xml file » dans votre dossier layout et donnez lui le nom de second_activity.xml: Faites un clic droit sur le dossier layout ==> New ==> Android XML File. Mettez ce code dans votre fichier second_activity.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/text" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="TextView" /> </LinearLayout> Après cela ajouter une nouvelle activité (classe java) dans votre package situé dans le dossier src et donnez-lui ce nom : «Second». Cette nouvelle classe (Second.java) dans laquelle nous pouvons faire appel à notre interface avec setContentView (View) doit hériter de la classe Activity et doit contenir la méthode "onCreate()" pour appeler (avec setContentView(View)) notre layout "second_activity.xml "récemment ajouté. La classe Second.java doit contenir ce code : public class Second extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second_activity); }} N'oubliez pas de déclarer votre nouvelle activité (Second) dans le fichier AndroidManifest.xml. A l'intérieur de la balise XML <application> .... </ application> du fichier AndroidManifest.xml mettez ce code : <activity android:name=".Second" android:label="@string/app_name" > </activity>
  • 7. M.Houssem LAHIANI 7 Votre AndroidManifest.xml sera semblable à ce code : <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.intention" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Second" android:label="@string/app_name" > </activity> </application> </manifest>
  • 8. M.Houssem LAHIANI 8 Maintenant, ce que nous voulons faire est de passer de la "MainActivity" à "Second", nous devons utiliser une intent pour le faire. Alors maintenant, nous devons ajouter ces deux lignes dans la methode onClick () de notre bouton pour passer de MainActivity à Second : public class MainActivity extends Activity { Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.intent); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intention = new Intent(MainActivity.this, Second.class); startActivity(intention); } }); } } Maintenant, exécutez votre projet et vous verrez ce qui se passera lorsque vous cliquez sur le bouton "Click me!". Mais si nous voulons envoyer des données de l'activité principale de la deuxième activité que ferons-nous ? Nous allons créer une variable de type String dans le MainActivity.java dans laquelle nous allons mettre un texte. Ce texte doit être affiché dans un toast après le déplacement de la première activité vers la seconde .Donc la valeur de cette chaîne doit être envoyé dans l’Intent avec la méthode "putExtra". Nous allons commencer par déclarer notre variable de type String. String value="Hello World!!!!"; Nous devons mettre cette variable dans notre méthode putExtra () après la déclaration de l’Intent. intention.putExtra("send", value);
  • 9. M.Houssem LAHIANI 9 Le composant qui crée l'Intent peut y ajouter des données avec la méthode surchargée putExtra(). Les données supplémentaires sont des paires clé ("send")/valeur(value), la clé est toujours une chaîne. En valeur, vous pouvez utiliser les types de données primitifs (int, float, ..) ainsi que les types String, Bundle, Parcelable et Serializable. Notre MainActivity aura ce code : public class MainActivity extends Activity { Button btn; String value="Hello World!!!!"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.intent); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intention = new Intent(MainActivity.this, Second.class); intention.putExtra("send", value); startActivity(intention); } });}} La question se pose maintenant : comment la classe "Second.java" pourrait récupérer les données qui ont été envoyées ? Nous devons créer un Bundle dans la classe Second.java pour récupérer les valeurs provenant de la classe « MainActivity.java ». Bundle extras= getIntent().getExtras(); getExtras():récupère les données qui ont été ajouté à l'aide putExtra (). getIntent () retourne l'Intent qui a démarré cette activité. Après ceci, nous devons créer une variable de type String pour avoir la chaîne passée avec l'Intent et par la suite nous allons créer un Toast pour nous montrer le contenu de cette chaîne. if(extras != null) { String newString=extras.getString("send"); Toast.makeText(Second.this,newString, Toast.LENGTH_LONG).show(); }
  • 10. M.Houssem LAHIANI 10 Donc le code que la classe Second.java doit contenir ressemble à ceci : public class Second extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second_activity); Bundle extras= getIntent().getExtras(); if(extras != null) { String newString=extras.getString("send"); Toast.makeText(Second.this,newString, Toast.LENGTH_LONG).show(); } } }