Les intents sous Android
I. Types de transmission d'Intent
II. Structure d'un Intent
IV. Intent Filter
V. Les différents types d'Intents
VI. Transfert de données entre activités
VII. Exercice : Utilisation des Intent de passer d'une activité à l'autre envoyer des données via putExtra
Ce support de cours contient les concepts fondamentaux de la sécurité des applications Web Statless avec Json Web Token. Des applications de mise en oeuvre de JWT et Spring Security pour les applications basées sur les Micro-services sont publiées ma chaîne vidéo Youtube :
https://www.youtube.com/user/mohamedYoussfi
Le code source des applications est publié sur mon compte GitHUB:
https://github.com/mohamedYoussfi/
Bon apprentissage
Support de cours EJB :
- Architecture JEE
- Séparer le code métier et le code technique
- Inversion de contrôle
- EJB session
- EJB Entity
- Mise en oeuvre des projets EJB
- EJB et Web services
- JMS
- MDB
- Gestion de transactions avec EJB
- Application
Manuel des TP - Atelier de développement web (PHP)
Niveau : Licence informatique - L2
Auteur : Houda TOUKABRI
Bibliothèque ISET Kélibia [TPI11 : 02-01-2018]
Support du cours - Programmation Web 2
Niveau : Licence informatique - L1
Auteur : Faycel CHAOUA
Bibliothèque ISET Kélibia [SCI8 : 02-01-2018]
Licence : CC BY-NC-SA [https://creativecommons.org/licenses/by-nc-sa/4.0/deed.fr]
Un support de cours complet sur l'architecture JEE et l'industrialisation du génie logiciel. Ce support contient les parties suivantes :
- Tendances du génie logiciel
- Architecture JEE
- Services de l'infrastructure JEE (jdbc, jndi, rmi,servlet, jsp, jstl, jsf,EJB, JaxWS, JaxRS, JMS, JMX, ....)
- Maven : Outil d'industrialisation du génie logiciel
- Junit : Test Unitaires
- Hibernate
- Spring IOC et Spring MVC
- Struts 2
Bon apprentissage à tous
Maven
Ce support de cours contient les concepts fondamentaux de la sécurité des applications Web Statless avec Json Web Token. Des applications de mise en oeuvre de JWT et Spring Security pour les applications basées sur les Micro-services sont publiées ma chaîne vidéo Youtube :
https://www.youtube.com/user/mohamedYoussfi
Le code source des applications est publié sur mon compte GitHUB:
https://github.com/mohamedYoussfi/
Bon apprentissage
Support de cours EJB :
- Architecture JEE
- Séparer le code métier et le code technique
- Inversion de contrôle
- EJB session
- EJB Entity
- Mise en oeuvre des projets EJB
- EJB et Web services
- JMS
- MDB
- Gestion de transactions avec EJB
- Application
Manuel des TP - Atelier de développement web (PHP)
Niveau : Licence informatique - L2
Auteur : Houda TOUKABRI
Bibliothèque ISET Kélibia [TPI11 : 02-01-2018]
Support du cours - Programmation Web 2
Niveau : Licence informatique - L1
Auteur : Faycel CHAOUA
Bibliothèque ISET Kélibia [SCI8 : 02-01-2018]
Licence : CC BY-NC-SA [https://creativecommons.org/licenses/by-nc-sa/4.0/deed.fr]
Un support de cours complet sur l'architecture JEE et l'industrialisation du génie logiciel. Ce support contient les parties suivantes :
- Tendances du génie logiciel
- Architecture JEE
- Services de l'infrastructure JEE (jdbc, jndi, rmi,servlet, jsp, jstl, jsf,EJB, JaxWS, JaxRS, JMS, JMX, ....)
- Maven : Outil d'industrialisation du génie logiciel
- Junit : Test Unitaires
- Hibernate
- Spring IOC et Spring MVC
- Struts 2
Bon apprentissage à tous
Maven
Cycle de vie d'activité Android et les composant d'AndroidHoussem Lahiani
Chapitre expliquant le cycle de vie d'une activité Android avec une application pour les différentes méthodes formant le cycle de vie de l'Activity.
Il contient aussi quelques exercices sure les composants Android comme les boites de dialogues et les case à cocher (
Android : système d'exploitation Linux pour appareils
nomades avec bibliothèques intégrées
(SQLite, WebKit, OpenGL...), machine virtuelle et
plate-forme de développement basée sur Java
Présentation donnée à l'Aperotech Oxalide, le 24 juin 2013.
Qu'est-ce que NodeJS ? pourquoi en parle-t-on autant ? quand l'utiliser ? qu'est-ce que l'asynchrone ? quelle est le contexte actuel du marché du js / NodeJS ?
Le support de formation de l'introduction à la programmation sous Android,réalisé par Houssem Lahiani dans le cadre du National Tour de Google Developers Group de Tunis.
Après avoir conquis le marché des smartphones et tablettes, Android devient incontournable dans le domaine industriel. Son utilisation pour la conception de solutions embarquées industrielles soulève toutefois des problématiques techniques spécifiques : customisation de l'OS, développement de pilotes de périphériques, capacité à répondre à des contraintes temps réel.
S'appuyant sur son expertise des technologies Linux embarqué, Open Wide Ingénierie a accompagné avec succès la réalisation de nombreux systèmes sur mesure. Les experts du pôle Mobilité et Multimédia partage leur expérience à travers cette présentation en abordant les sujets techniques indispensables avant de migrer vers Android.
Cycle de vie d'activité Android et les composant d'AndroidHoussem Lahiani
Chapitre expliquant le cycle de vie d'une activité Android avec une application pour les différentes méthodes formant le cycle de vie de l'Activity.
Il contient aussi quelques exercices sure les composants Android comme les boites de dialogues(AlertDialog) et les case à cocher (RadioButton).
Formation Android (Initiation à la programmation sous Android)G²FOSS ENIT
Exposé de la première séance de formation en programmation mobile sous Android, animée par Med Hossam (Elève Ingénieur en GLSI à l'ISI)
[Atelier Mobile]
Alphorm.com Formation Windev Mobile 19, AndroidAlphorm
Vous trouverez la formation complète ici:
http://www.alphorm.com/tutoriel/formation-en-ligne-windev-mobile-android-19
Dans cette formation vous allez apprendre avec WinDev Mobile pour Android, par le développement pas à pas d’un logiciel mobile complet.
Vous allez pouvoir Configurer l’environnement de développement(SDK, Java…), Comprendre les principes de fonctionnement de WinDev mobile(Compilation…), Utiliser des sources de données hétérogènes(SQLite, HFSQL, Access, la réplication…), Utiliser les principaux champs(Action bar, carte, graphe…), Développer en multiplateforme(Code cible conditionnel, conseils…), Programmer, utiliser les outils mobiles(GPS, SMS, capteurs, caméra, codes-barres …) et Déployer une application(Google Play, Emulateur, ADB…)
Formation complète ici:
http://www.alphorm.com/tutoriel/formation-en-ligne-android-5
La plateforme Android est la plus répandue aujourd’hui dans le monde du mobile.
Multi-constructeurs, multi-éditeur, elle est diverse de par les matériels ciblés et les cas d’usage.
Dans cette formation, vous appréhenderez la plateforme sous toutes ses formes, et vous explorerez la plupart des aspects de la programmation Android.
Les bases de la construction de l’application, jusqu’à la publication sur Google Play.
Nous aurons aussi l’occasion de parler de Android Wear.
Comme support de la formation, vous créerez une application de gestion des parcours, qui sera utilisable au quotidien.
Grâce à l’expertise technique et pédagogique de votre expert objet, Fabien Brissonneau, vous allez aborder en douceur la programmation Android.
Ce premier module est volontairement assez simple, pour découvrir les concepts, que vous approfondirez dans la formation Android avancée.
Introduction au développement iOS par Pascal Batty - 131112SOAT
En quelques années, le mobile s'est imposé comme une plate-forme informatique à part entière et un moyen privilégié d'accéder à Internet. Pour le développement d'applications, l'iPhone semble être devenu un incontournable.
Pascal Batty vous présente tout ce qu'il faut savoir avant de s'attaquer au développement sur IOS : les différentes pistes possibles et les pré-requis, mais aussi ce qu'est réellement une "App" et quel peut être le travail que ça représente.
Cette présentation ne nécessite aucune connaissance technique particulière et s'adresse à tous quelle que soit votre technologie de prédilection .
La vidéo de la présentation est visible ici : http://youtu.be/IcV5AJOj2EY
Support de formation pour les développeurs. Pour les formations, ce support est complété par un livret d'exercices pour les stagiaires et de l'ensemble de tous les exemples, sous forme de projets Eclipse.
Mise en place de l'ActionBarCompat dans vos projets Android.Mathias Seguy
Petite conférence sur la mise en place de l'ActionBarCompat dans votre application Android avec:
Mise en place de l'ActionBarCompat
Ajout de MenuItem
Mise en place d'une ActionView de recherche
Mise en place de l'ActionMode.
ToulouseAndroidUserGroup du 5 Juin 2014
Quelques notions pour vous familiariser avec la plateforme Android et améliorer les applications que vous y développez. Vous pouvez toujours m’écrire pour des commentaires ou questions ing.josephdavid@gmail.com
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>
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();
}
}
}