SlideShare une entreprise Scribd logo
1  sur  46
LALA GESTIONGESTION DESDES ÉVÉNEMENTSÉVÉNEMENTS
ETET LESLES INTENTSINTENTS
2017-2018
© Imene Sghaier
ISET NabeulISET Nabeul
SEM2 & Mastère SEM1SEM2 & Mastère SEM1
OBJECTIFS ET ÉLÉMENTS DE CONTENU
 Objectifs spécifiques
 S’initier au control et gestion des évènement et à la notion d’intent implicite et explicite
 Se familiariser avec le control d’évènements et la navigation entre activités et applications
 Eléments de contenu
 La gestion des évènements
 Les intents
 L’enchainement des écrans avec des intents explicites
 Les intents implicites
 Actions
 Méthodes d’invocations d’intents
 Appel Téléphonique
 Envoi de mails
 Voir tous les contacts
 Voir un contact particulier
 Editer un contact
 Recherche google
 Envoi d’un SMS
 Afficher photos
 Voir une page Web
 Géolocalisation par coordonnées longitudes et latitude
 Lancer Music Player
 Ecouter chanson
 Paramètres système
 Volume Horaire :
 Cours : 1.5 heure
2
Imene Sghaier-Développement d'Applications Mobiles Natives
LA GESTION DES ÉVÈNEMENTS
 Deux moyens pour gérer les évènements:
 Créer un auditeur d'événements (classe qui implémente
une interface connue) et l'enregistrer auprès du composant
en question
 les View sont elles mêmes auditrices de certains
événements : (touché de l'écran par exemple). Il suffit donc
de spécialiser la méthode adaptée et la lancer lorsque
l'événement survient. Ces interfaces sont des interfaces
internes à la classe View et de nom OnXXXListener, donc
des interfaces de nom View.OnXXXListener. Cela
nécessite d'implémenter une méthode de nom onXXX( ).
On enregistre un auditeur par
setOnXXXListener(View.OnXXXListener).
Ceci permettra d'écrire directement la gestion de certains
événements qui peuvent se produire dans la View
3
Imene Sghaier-Développement d'Applications Mobiles Natives
LA GESTION DES ÉVÈNEMENTS
 La première méthode consiste à faire implémenter un
listener à notre classe, ce qui veut dire que notre classe
sera une classe à l'écoute des actions qu'on effectuera sur
les vues. A chaque fois qu'on effectuera une action, une
méthode qui correspond à cette action sera appelée, et on
définira dans cette méthode ce qu'il faut faire une fois
l'action effectuée
 Il existe déjà plusieurs interfaces prédéfinies, une pour
chaque type d'actions, nous allons voir uniquement le clic
normal pour l'instant.
 L'interface utilisée s'appelle View.OnClickListener et
nous oblige à définir la méthode void onClick (View vue).
 C'est dans cette méthode qu'on définira la conduite à
adopter en cas de clic. L'argument de type View est la
vue sur laquelle le clic a été effectué. 4
Imene Sghaier-Développement d'Applications Mobiles Natives
LA GESTION DES ÉVÈNEMENTS
Il existe d'autres interfaces avec d'autres méthodes à implémenter
 View.OnLongClickListener pour les longs clics, avec la méthode :
 boolean onLongClick(View vue)
 elle doit retourner true une fois que l'action associée a été effectuée.
 View.OnKeyListener pour gérer l'appui de touches avec la
méthode :
 boolean onKey (View vue, int codeTouche, KeyEvent inforEvent)
 Cette méthode doit retourner true une fois que l'action associée a été
effectuée.
 View.OnTouchListener correspond à une simple touche qui
s'effectue sur l'élément. On observe une touche au moment d'un
clique puis au moment du relâchement. Rester appuyé après un clic
est toujours une touche, même si on sort de l'élément. On y associe la
méthode :
 boolean onTouch (View vue, MotionEvent inforEvent)
 Cette méthode doit retourner true une fois que l'action associée a été
effectuée.
5
Imene Sghaier-Développement d'Applications Mobiles Natives
LA GESTION DES ÉVÉNEMENTS
6
private OnClickListener lAuditeurDuBouton = new OnClickListener() {
public void onClick(View v) {
// code lancé lorsque le bouton est cliqué
}
};
protected void onCreate(Bundle savedValues) {
...
// Récupération du Button à partir de l'IHM en XML
Button button = (Button)findViewById(R.id.leBeauBouton);
// Enregistrer l'auditeur auprès du bouton
button.setOnClickListener(lAuditeurDuBouton);
...
}
Exemple: Créer un auditeur d'événements
Imene Sghaier-Développement d'Applications Mobiles Natives
7
public class Main extends Activity implements View.OnTouchListener,
View.OnClickListener {
Button b = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b = (Button) findViewById(R.id.boutton);
b.setOnTouchListener(this);
b.setOnClickListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
/* réagir au toucher */
return true; }
@Override public void onClick(View v) {
/* réagir au clic */
}
}
LA GESTION DES ÉVÉNEMENTS
Exemple: Créer un auditeur d'événements
Imene Sghaier-Développement d'Applications Mobiles Natives
LA GESTION DES ÉVÉNEMENTS
8
public void onClick(View v) {
switch(v.getId()) {
//Si l'identifiant de la vue est celui du premier bouton
case R.id.bouton1:
/* agir pour bouton 1 */
break;
//Si l'identifiant de la vue est celui du second boutoncase
R.id.bouton2:
/* agir pour bouton 2 */
break;
/* etc. */ }}
 si on a plusieurs boutons et qu'ils doivent effectuer
des actions différentes, on peut par exemple passer par
un switch pour savoir comment réagir en fonction du
bouton:
Imene Sghaier-Développement d'Applications Mobiles Natives
9
public class Main extends Activity{
private OnClickListener clickListenerBoutons = new OnClickListener(){
@Override
public void onClick(View v) {
/* réagir au clic pour les boutons 1 et 2*/}};
private OnTouchListener touchListenerBouton1 = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
/* réagir au toucher pour le bouton 1*/
return false;}};
private OnTouchListener touchListenerBouton3 = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
/* réagir au toucher pour le bouton 3*/
return false;}};
Button b = null; Button b2 = null; Button b3 = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b = (Button) findViewById(R.id.boutton);
b.setOnTouchListener(touchListenerBouton1);
b.setOnClickListener(clickListenerBoutons);
b2.setOnClickListener(clickListenerBoutons);
b3.setOnTouchListener(touchListenerBouton3); }}
LA GESTION DES ÉVÉNEMENTS
Imene Sghaier-Développement d'Applications Mobiles Natives
LA GESTION DES ÉVÉNEMENTS
 On peut indiquer dans le fichier .xml de description d'IHM, la
méthode qui sera lancée sous une certaine action sur un
composant graphique
 Par exemple, l'attribut android:onClick d'un composant
graphique indique le nom de la méthode qui sera lancée si on
clique sur cette View
 Par exemple, dans le fichier de description de l'IHM, on écrit
 Dans l'activité chargeant l'IHM contenant ce Button, on pourra
écrire :
10
<Button
android:id="@+id/push"
...
android:onClick="onClickEmpiler">
</Button>
public void onClickEmpiler(View v){
// traitement lancé lorsque l'utilisateur clique sur le Button d'id push
}
Imene Sghaier-Développement d'Applications Mobiles Natives
PLAN DU CHAPITRE
 La gestion des évènements
 LesLes intentsintents
 L’enchainement des écrans avec des intents explicites
 Les intents implicites
 Actions
 Méthodes d’invocations d’intents
 Appel Téléphonique
 Envoi de mails
 Voir tous les contacts
 Voir un contact particulier
 Editer un contact
 Recherche google
 Envoi d’un SMS
 Afficher photos
 Voir une page Web
 Géolocalisation par coordonnées longitudes et latitude
 Lancer Music Player
 Ecouter chanson
 Paramètres système
11
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS
 Un intent est une "intention" à faire quelque chose
contenant des informations destinées à un composant
Android. C'est un message asynchrone.
 Les activités, services et récepteurs d'informations
utilisent les Intents pour communiquer entre eux.
 La navigation entre les écrans peut se faire de deux
façons différentes : soit explicitement, soit implicitement.
Dans les deux cas, l’ordre de changement d’activité est
véhiculé par un objet de type Intent .
 Un Intent ne contient pas obligatoirement explicitement
le composant qui va le gérer. Dans ce cas c'est un Intent
implicite.
 Si l'Intent indique explicitement la classe du composant
qui va le gérer c'est un Intent explicite
 Un événement est une sous classe de
android.content.Intent 12
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS
 Les Intents permettent de gérer l'envoi et la réception de
messages afin de faire coopérer les applications.
 Le but des Intents est de déléguer une action à un autre
composant, une autre application ou une autre activité de
l'application courante.
 Un objet Intent contient les information (champs)
suivantes:
 le nom du composant ciblé (facultatif)
 l'action à réaliser, sous forme de chaine de caractères
 les données: contenu MIME et URI
 des données supplémentaires (extra) sous forme de
paires clè/valeur
 une catégorie pour cibler un type d'application
 des drapeaux (informations supplémentaires)
13
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS
 La façon dont sont renseignés ces champs
détermine la nature ainsi que les objectifs de
l'intent.
 Ainsi, pour qu'un intent soit dit « explicite », il
suffit que son champ composant soit renseigné. Ce
champ permet de définir le destinataire de l'intent,
celui qui devra le gérer.
 Ce champ est constitué de deux informations :
le package où se situe le composant, ainsi que
le nom du composant. Ainsi, quand l'intent sera
exécuté, Android pourra retrouver le composant de
destination de manière précise.
14
Imene Sghaier-Développement d'Applications Mobiles Natives
PLAN DU CHAPITRE
 La gestion des évènements
 Les intents
 L’enchainement des écrans avec desL’enchainement des écrans avec des intentsintents explicitesexplicites
 Les intents implicites
 Actions
 Méthodes d’invocations d’intents
 Appel Téléphonique
 Envoi de mails
 Voir tous les contacts
 Voir un contact particulier
 Editer un contact
 Recherche google
 Envoi d’un SMS
 Afficher photos
 Voir une page Web
 Géolocalisation par coordonnées longitudes et latitude
 Lancer Music Player
 Ecouter chanson
 Paramètres système
15
Imene Sghaier-Développement d'Applications Mobiles Natives
L’ENCHAINEMENT DES ECRANS AVEC DES INTENTS
EXPLICITES
 En fait cet Intent est envoyé à l'environnement
d'exécution. Celui ci le redirige vers l'activité concernée
16
Imene Sghaier-Développement d'Applications Mobiles Natives
L’ENCHAINEMENT DES ECRANS AVEC DES
INTENTS EXPLICITES
 Pour passer d'une activité courante à une nouvelle
activité, il faut écrire le code :
 Et il faut bien évidement déclarer la nouvelle activité (le
futur écran) dans le fichier manifest
 public void startActivity (Intent intent) est une
méthode de la classe Activity permettant de lancer une
autre Activity (qui affichera un nouvel écran).
17
Intent i = new Intent(getApplicationContext(),
NouvelleActivity.class);
startActivity(i);
Imene Sghaier-Développement d'Applications Mobiles Natives
L’ENCHAINEMENT DES ECRANS AVEC DES INTENTS
EXPLICITES
 Si on ne s’attend pas à ce que la nouvelle activité nous
renvoie un résultat, alors on peut l'appeler
 void startActivity (Intent intent) (elle va commencer
par un onCreate)
 Si on veut un résultat en retour de la nouvelle activity
on utilisera la méthode
 void startActivityForResult(Intent intent, int
requestCode)
 requestCode un code passé qui permet d'identifier
de manière unique un intent.
18
Imene Sghaier-Développement d'Applications Mobiles Natives
L’ENCHAINEMENT DES ECRANS AVEC DES INTENTS EXPLICITES
 Quand l'activité appelée s'arrêtera, la première
méthode de callback appelée dans l'activité précédente
sera
void onActivityResult(int requestCd, int resultCd, Intent data)
 On retrouve requestCd, qui sera le même code que
celui passé dans le startActivityForResult et qui
permet de repérer quel intent a provoqué l'appel de
l'activité dont le cycle vient de s'interrompre.
 resultCd est quant à lui un code renvoyé par l'activité
qui indique comment elle s'est terminée
 typiquement Activity.RESULT_OK si l'activité s'est terminée
normalement, ou
 Activity.RESULT_CANCELED s'il y a eu un problème ou
qu'aucun code de retour n'a été précisé).
 Enfin, data est un intent qui contient des données.
19
Imene Sghaier-Développement d'Applications Mobiles Natives
L’ENCHAINEMENT DES ECRANS AVEC DES
INTENTS EXPLICITES
 Le premier argument du constructeur de l'Intent doit
être le Context de l’application. Si l'appel est fait dans
une activity MonActivity, this est souvent utilisé et
convient car Activity dérive de Context
 On utilise souvent MonActivity.this quand on est dans
un listener d'événement. Mais, la méthode
getApplicationContext() est la plus pratique et la
plus sûre.
 Les intents ont un champ « extra » qui leur permet de
contenir des données à véhiculer entre les applications.
 Un extra est en fait une clé à laquelle on associe une
valeur.
 Pour insérer un extra, il suffit d'utiliser la
méthode Intent putExtra(String key, X val) 20
Imene Sghaier-Développement d'Applications Mobiles Natives
L’ENCHAINEMENT DES ECRANS AVEC DES
INTENTS EXPLICITES
 Les Intent servent d'enveloppes pour passer des
informations d'une Activity à une autre. On utilise
pour cela la m éthode
 Exemple
21
public Intent putExtra(String nomDeLExtra, unType valeur)
Intent i = new Intent(leContexte, envoyerFormulaire.class);
i.putExtra("name", nom);
i.putExtra("firstName", prenom);
startActivity(i);
Imene Sghaier-Développement d'Applications Mobiles Natives
L’ENCHAINEMENT DES ECRANS AVEC DES INTENTS
EXPLICITES
 Dans une Activity, on récupére l'Intent qui a lancé
l'Activity par getIntent(). On peut alors récupérer
tous les extras de l'Intent par getExtras(), et, par la
suite, un extra associé à une entrée par :
getTypeEntrée(nomEntrée, valeurParDefaut),
 valeurParDefaut est la valeur retournée si il n'y a
pas d'extra associé à nomEntrée dans l'Intent
 On récupère l'information de la manière suivante:
22
Bundle extras = getIntent().getExtras();
String nom = new String(extras.getString("name" ,null));
Ou String nom =getIntent().getExtras().getString("name");
Imene Sghaier-Développement d'Applications Mobiles Natives
PLAN DU CHAPITRE
 La gestion des évènements
 Les intents
 L’enchainement des écrans avec des intents explicites
 LesLes intentsintents implicitesimplicites
 Actions
 Méthodes d’invocations d’intents
 Appel Téléphonique
 Envoi de mails
 Voir tous les contacts
 Voir un contact particulier
 Editer un contact
 Recherche google
 Envoi d’un SMS
 Afficher photos
 Voir une page Web
 Géolocalisation par coordonnées longitudes et latitude
 Lancer Music Player
 Ecouter chanson
 Paramètres système
23
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES
 À l'opposé des intents explicites se trouvent les intents
implicites
 Les intents implicites sont utilisés pour envoyer une requête à
un destinataire, sans savoir qui il est
 S'il s'agit de passer la main à une autre application, on donne au
constructeur de l'Intent les données et l'URI (uniform ressource
identifier) cible: l'OS est chargé de trouver une application
pouvant répondre à l'Intent.
 Ainsi, les applications destinataires sont soit fournies par
Android, soit par d'autres applications téléchargées sur le Play
Store par exemple.
 Dans ce cas, on ne connaît pas de manière précise pour spécifier
le destinataire de l'intent, c'est pourquoi on va s'appliquer à
renseigner d'autres champs pour laisser Android déterminer qui
est capable de réceptionner cet intent.
 Il faut au moins fournir deux informations essentielles :
 Une action : ce qu'on désire que le destinataire fasse.
 Un ensemble de données : sur quelles données le destinataire doit
effectuer son action.
24
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES
 Il existe aussi d'autres informations, pas forcément
obligatoires, mais qui ont aussi leur utilité propre le
moment venu :
 La catégorie : permet d'apporter des informations
supplémentaires sur l'action à exécuter et le type de
composant qui devra gérer l'intent.
 Le type : pour indiquer quel est le type des données
incluses. Normalement ce type est contenu dans les
données, mais en précisant cet attribut vous pouvez
désactiver cette vérification automatique et imposer un
type particulier.
 Les extras : pour ajouter du contenu à vos intents afin de
les faire circuler entre les composants.
 Les flags : permettent de modifier le comportement de
l'intent. 25
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES
 L’action d’un intent implicite est une chaîne de
caractères qui symbolise le traitement à déclencher.
 De nombreuses constantes sont définies dans le SDK
pour les actions nativement disponibles comme:
 Intent.ACTION_WEB_SEARCH pour demander de réaliser
une recherche sur Internet
 Intent.ACTION_CALL pour passer un appel téléphonique.
 La catégorie, quant à elle, apporte une classification à
l’action.
 La catégorie Intent.CATEGORY_LAUNCHER
positionne l’activité comme étant exécutable, cette
catégorie est utilisée de pair avec l’action
Intent.ACTION_MAIN.
 Android positionne les activités de cette catégorie dans
le lanceur d’applications.
 La catégorie CATEGORY_HOME marque l’activité à
afficher au démarrage du téléphone.
26
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES
 Les données détaillent l’action de l’Intent dont elles
dépendent directement.
 Elles peuvent être d’ailleurs nulles, certaines actions
n’appelant pas forcément à devoir être précisées.
 Par exemple pour l’action ACTION_CALL, la donnée
sera le numéro de téléphone à composer.
 La donné est couplée avec un autre attribut qui est le
type MIME de la donnée à traiter.
27
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES
 Les données sont formatées à l'aide des URI (uniform
ressource identifier)
 Un URI est une chaîne de caractères qui permet
d'identifier un endroit. Par exemple sur internet, ou dans
le cas d'Android sur le périphérique ou une ressource.
 Afin d'étudier les URI, on va faire l'analogie avec les
adresses URL qui nous permettent d'accéder à des sites
internet. En effet, un peu à la manière d'un serveur, nos
fournisseurs de contenu vont répondre en fonction de l'URI
fournie. De plus, la forme générale d'une URI rappelle
fortement les URL.
 Prenons l'exemple du site de ISETN avec une URL
inventée : http://www.isetn.rnu.tn/acceuil/actualités.html
 On identifie plusieurs parties :
 http://
 www.isetn.rnu.tn
 /acceuil/actualités.html 28
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES
 La syntaxe d'un URI peut être analysée de la manière
suivante (les parties entre accolades {} sont optionnelles)
:
<schéma><schéma> :: <information><information> {{ ?? <requête><requête> }} {{ ## <fragment><fragment> }}
 Le schéma décrit quelle est la nature de l'information.
 S'il s'agit d'un numéro de téléphone, alors le schéma
sera tel, s'il s'agit d'un site internet, alors le schéma
sera http, etc.
 L'information est la donnée en tant que telle. Cette
information respecte elle aussi une syntaxe, mais qui
dépend du schéma cette fois-ci.
 Ainsi, pour un numéro de téléphone, on peut nous
contenter d'insérer le numéro tel:0606060606, mais pour
des coordonnées GPS il faudra séparer la latitude de la
longitude à l'aide d'une virgule geo:123.456789,-12.345678.
 Pour un site internet, il s'agit d'un chemin hiérarchique. 29
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES
 Pour créer un objet URI, c'est simple, il suffit
d'utiliser la méthode statique
 Par exemple, pour envoyer un SMS à une personne,
on utilisera l'URI :
 On peut aussi indiquer plusieurs destinataires et un
corps pour ce message :
30
Uri Uri.parse(String uri);
Uri sms = Uri.parse("sms:0606060606");
Uri.parse("sms:0606060606,0606060607?body=Salut%20lesamies");
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES
 Le MIME est un identifiant pour les formats de fichier.
 Par exemple,
 type MIME text. Si une donnée est accompagnée du type
MIME text, alors les données sont du texte.
 On trouve aussi audioet video par exemple. Il est ensuite
possible de préciser un sous-type afin d'affiner les
informations sur les données, par
exemple audio/mp3 et audio/wav sont deux types MIME qui
indiquent que les données sont sonores, mais aussi de quelle
manière elles sont encodées.
 Les types MIME que nous venons de voir son standards,
c'est-à-dire qu'il y a une organisation qui les a reconnus
comme étant légitimes.
 Mais si on veut créer ses propres types MIME, il existe
une petite syntaxe à respecter pour les types
personnalisés [https://fr.wikipedia.org/wiki/Type_MIME] 31
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES- ACTIONS
 Liste des actions standard que les intentions peuvent utiliser
pour les activités de lancement (généralement par le biais
startActivity (intention).
32
 ACTION_MAIN
 ACTION_VIEW
 ACTION_ATTACH_DATA
 ACTION_EDIT
 ACTION_PICK
 ACTION_CHOOSER
 ACTION_GET_CONTENT
 ACTION DIAL
 ACTION_ANSWER
 ACTION_INSERT
 ACTION_DELETE
 ACTION_RUN
 ACTION_SYNC
 ACTION_PICK_ACTIVITY
 ACTION_SEARCH
 ACTION WEB SEARCH
 ACTION_ACTION_CALL
 ACTION_SEND
 ACTION_SENDTO
 ACTION_WEB_ACTION_FACT
ORY_TEST
http://developer.android.com/reference/android/content/Intent.html
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES- MÉTHODES
D’INVOCATION D’INTENTS
33
Méthodes Fonctionnalités
startActivity(intent) Lance une activity
sendBroadcast(intent) Envoie l’intend à n’importe quel
composant BraodcastReceiver
interessé
startService(intent) ou
binService(intent,…)
Communique avec un service en
arrière plan
Imene Sghaier-Développement d'Applications Mobiles Natives
 Pour passer d'une activité courante à une nouvelle
activité, il faut écrire le code :
 Il ne faut pas oublier d’ajouter les permissions nécessaire
au fichier manifest.xml
<uses-permission
android:name="android.permission.CALL_PHONE" >
</uses-permission>
INTENTS IMPLICITES-APPEL TELPHONIQUE
34
Button b = (Button)findViewById(R.id.Button01);
b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {Uri telnumber =
Uri.parse("tel:0248484000");Intent call = new
Intent(Intent.ACTION_DIAL, telnumber);
startActivity(call);
} });
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES- ENVOI DE MAILS
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
String[] recipients = new String[]{"my@email.com", "",};
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, recipients);
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Test");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Message");
emailIntent.setType("text/plain");
startActivity(Intent.createChooser(emailIntent, "Send mail..."));
finish();
35
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES- VOIR TOUS LES CONTACTS
String myData = "content://contacts/people/";
Intent myActivity2 = new Intent(Intent.ACTION_VIEW,
Uri.parse(myData));
startActivity(myActivity2);
36
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES- VOIR UN CONTACT PARTICULIER
String myData = "content://contacts/people/2";
Intent myActivity2 = new Intent(Intent.ACTION_VIEW,
Uri.parse(myData));
startActivity(myActivity2);
//Ceci affiche le contact numéro 2 dans le repertoire
37
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES- EDITER UN CONTACT
String myData = "content://contacts/people/2";
Intent myActivity2 = new Intent(Intent.ACTION_EDIT,
Uri.parse(myData));
startActivity(myActivity2);
//Ceci permet d’éditer le contact numéro 2
38
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES- RECHERCHE GOOGLE
Intent intent = new Intent (Intent.ACTION_WEB_SEARCH );
intent.putExtra(SearchManager.QUERY, "papillons");
startActivity(intent);
//Ceci lance une recherche google à propos des papillons
39
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES- ENVOI D’UN SMS
Intent intent = new Intent( Intent.ACTION_SENDTO,
Uri.parse("sms:21314151"));
intent.putExtra("sms_body", "Vous allez à la réunion?");
startActivity(intent);
//Ceci envoie un SMS « Vous allez à la réunion? » au
//numéro 21314151
40
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES- AFFICHER PHOTOS
Intent myIntent = new Intent();
myIntent.setType("image/pictures/*");
myIntent.setAction(Intent.ACTION_GET_CONTENT);
startActivity(myIntent);
//On pourra bien évidement choisir un autre
//repertoire
41
Imene Sghaier-Développement d'Applications Mobiles Natives
<uses-permission
android:name="android.permission.INTERNET " >
</uses-permission>
LES INTENTS IMPLICITES- VOIR UNE PAGE WEB
String myData = "http://www.youTube.com";
Intent myActivity2 = new Intent(Intent.ACTION_VIEW,
Uri.parse(myData));
startActivity(myActivity2);
 Il ne faut pas oublier d’ajouter les permissions nécessaires
dans le fichier manifeste :
42
Imene Sghaier-Développement d'Applications Mobiles Natives
<uses-permission android:name="
android.permission.ACCESS_COARSE_LOCATION " >
</uses-permission>
LES INTENTS IMPLICITES- GEOLOCALISATION PAR
COORDONNÉES LONGITUDE ET LATITUDE
String geoCode ="geo:41.5020952,-81.6789717";
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse(geoCode));
startActivity(intent);
43
• Il ne faut pas oublier d’ajouter les permissions
nécessaires dans le fichier manifeste :
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES- LANCER MUSIC PLAYER
Intent i = new Intent("android.intent.action.MUSIC_PLAYER");
startActivity(i);
44
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES- ECOUTER CHANSON
SUR CARTE SD
Intent i=new Intent(android.content.Intent.ACTION_VIEW);
Uri data = Uri.parse("file:///sdcard/tiratata.mp3");
String type = "audio/mp3";
i.setDataAndType(data, type);
startActivity(i);
45
Imene Sghaier-Développement d'Applications Mobiles Natives
LES INTENTS IMPLICITES- PARAMETRES SYSTEME
Intent i=new Intent(android.provider.Settings.ACTION_SETTINGS);
startActivity(intent);
46
Imene Sghaier-Développement d'Applications Mobiles Natives

Contenu connexe

Similaire à Chapitre 5 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'AndroidHoussem Lahiani
 
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.Mathias Seguy
 
Messages Extensions par Nicolas Fontaine
Messages Extensions par Nicolas FontaineMessages Extensions par Nicolas Fontaine
Messages Extensions par Nicolas FontaineIdean France
 
Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014Paris Android User Group
 
Android Lab Test : L'installation d'une application en Java (français)
Android Lab Test : L'installation d'une application en Java (français)Android Lab Test : L'installation d'une application en Java (français)
Android Lab Test : L'installation d'une application en Java (français)Bruno Delb
 
Création d’applications et découverte d’Android
Création d’applications et découverte d’AndroidCréation d’applications et découverte d’Android
Création d’applications et découverte d’AndroidENSAM Casablanca
 
Présentation pratique de l'outil Mention
Présentation pratique de l'outil MentionPrésentation pratique de l'outil Mention
Présentation pratique de l'outil MentionElBachirSENE
 
Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menusLilia Sfaxi
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrageLilia Sfaxi
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Saber LAJILI
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Sabeur LAJILI
 
Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Les ateliers android_1_vers2015
Les ateliers android_1_vers2015Sabeur LAJILI
 

Similaire à Chapitre 5 android (20)

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
 
Les Activités.pdf
Les Activités.pdfLes Activités.pdf
Les Activités.pdf
 
My droid
My droidMy droid
My droid
 
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.
 
Poo
PooPoo
Poo
 
Cours 1 Android
Cours 1 AndroidCours 1 Android
Cours 1 Android
 
cour-DOM-Partie6.pdf
cour-DOM-Partie6.pdfcour-DOM-Partie6.pdf
cour-DOM-Partie6.pdf
 
Messages Extensions par Nicolas Fontaine
Messages Extensions par Nicolas FontaineMessages Extensions par Nicolas Fontaine
Messages Extensions par Nicolas Fontaine
 
Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014Google glass droidcon - DroidCon Paris 2014
Google glass droidcon - DroidCon Paris 2014
 
Détection des mobiles
Détection des mobilesDétection des mobiles
Détection des mobiles
 
Android Lab Test : L'installation d'une application en Java (français)
Android Lab Test : L'installation d'une application en Java (français)Android Lab Test : L'installation d'une application en Java (français)
Android Lab Test : L'installation d'une application en Java (français)
 
Les Widgets
Les WidgetsLes Widgets
Les Widgets
 
Création d’applications et découverte d’Android
Création d’applications et découverte d’AndroidCréation d’applications et découverte d’Android
Création d’applications et découverte d’Android
 
Présentation pratique de l'outil Mention
Présentation pratique de l'outil MentionPrésentation pratique de l'outil Mention
Présentation pratique de l'outil Mention
 
Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menus
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrage
 
Android introvf
Android introvfAndroid introvf
Android introvf
 
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
 

Plus de Institut Supérieur des Etudes Technologiques de Nabeul (8)

Les sockets.pptx
Les sockets.pptxLes sockets.pptx
Les sockets.pptx
 
chap 0 POO.pptx
chap 0 POO.pptxchap 0 POO.pptx
chap 0 POO.pptx
 
Chapitre 4 sem
Chapitre 4 semChapitre 4 sem
Chapitre 4 sem
 
Chapitre 3 sem
Chapitre 3 semChapitre 3 sem
Chapitre 3 sem
 
Chapitre 1 sem
Chapitre 1 semChapitre 1 sem
Chapitre 1 sem
 
Chapitre 5 sem
Chapitre 5 semChapitre 5 sem
Chapitre 5 sem
 
Chapitre 6 sem
Chapitre 6 semChapitre 6 sem
Chapitre 6 sem
 
Chapitre 4 Linux
Chapitre 4 LinuxChapitre 4 Linux
Chapitre 4 Linux
 

Dernier

JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...Institut de l'Elevage - Idele
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)Sana REFAI
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéInstitut de l'Elevage - Idele
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestionyakinekaidouchi1
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusInstitut de l'Elevage - Idele
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Ville de Châteauguay
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...Institut de l'Elevage - Idele
 
DISPOSITIFS-MEDICAUX-PPT.pdf............
DISPOSITIFS-MEDICAUX-PPT.pdf............DISPOSITIFS-MEDICAUX-PPT.pdf............
DISPOSITIFS-MEDICAUX-PPT.pdf............cheddadzaineb
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...Institut de l'Elevage - Idele
 
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfWBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfSophie569778
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesInstitut de l'Elevage - Idele
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...Institut de l'Elevage - Idele
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageInstitut de l'Elevage - Idele
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...Institut de l'Elevage - Idele
 
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...Institut de l'Elevage - Idele
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 

Dernier (20)

JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversité
 
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 
JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
 
DISPOSITIFS-MEDICAUX-PPT.pdf............
DISPOSITIFS-MEDICAUX-PPT.pdf............DISPOSITIFS-MEDICAUX-PPT.pdf............
DISPOSITIFS-MEDICAUX-PPT.pdf............
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
GAL2024 - Consommations et productions d'énergies dans les exploitations lait...
 
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdfWBS OBS RACI_2020-etunhjjlllllll pdf.pdf
WBS OBS RACI_2020-etunhjjlllllll pdf.pdf
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentes
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
 
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
GAL2024 - Parcellaire des fermes laitières : en enjeu de compétitivité et de ...
 
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
GAL2024 - Méthane 2030 : une démarche collective française à destination de t...
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 

Chapitre 5 android

  • 1. LALA GESTIONGESTION DESDES ÉVÉNEMENTSÉVÉNEMENTS ETET LESLES INTENTSINTENTS 2017-2018 © Imene Sghaier ISET NabeulISET Nabeul SEM2 & Mastère SEM1SEM2 & Mastère SEM1
  • 2. OBJECTIFS ET ÉLÉMENTS DE CONTENU  Objectifs spécifiques  S’initier au control et gestion des évènement et à la notion d’intent implicite et explicite  Se familiariser avec le control d’évènements et la navigation entre activités et applications  Eléments de contenu  La gestion des évènements  Les intents  L’enchainement des écrans avec des intents explicites  Les intents implicites  Actions  Méthodes d’invocations d’intents  Appel Téléphonique  Envoi de mails  Voir tous les contacts  Voir un contact particulier  Editer un contact  Recherche google  Envoi d’un SMS  Afficher photos  Voir une page Web  Géolocalisation par coordonnées longitudes et latitude  Lancer Music Player  Ecouter chanson  Paramètres système  Volume Horaire :  Cours : 1.5 heure 2 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 3. LA GESTION DES ÉVÈNEMENTS  Deux moyens pour gérer les évènements:  Créer un auditeur d'événements (classe qui implémente une interface connue) et l'enregistrer auprès du composant en question  les View sont elles mêmes auditrices de certains événements : (touché de l'écran par exemple). Il suffit donc de spécialiser la méthode adaptée et la lancer lorsque l'événement survient. Ces interfaces sont des interfaces internes à la classe View et de nom OnXXXListener, donc des interfaces de nom View.OnXXXListener. Cela nécessite d'implémenter une méthode de nom onXXX( ). On enregistre un auditeur par setOnXXXListener(View.OnXXXListener). Ceci permettra d'écrire directement la gestion de certains événements qui peuvent se produire dans la View 3 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 4. LA GESTION DES ÉVÈNEMENTS  La première méthode consiste à faire implémenter un listener à notre classe, ce qui veut dire que notre classe sera une classe à l'écoute des actions qu'on effectuera sur les vues. A chaque fois qu'on effectuera une action, une méthode qui correspond à cette action sera appelée, et on définira dans cette méthode ce qu'il faut faire une fois l'action effectuée  Il existe déjà plusieurs interfaces prédéfinies, une pour chaque type d'actions, nous allons voir uniquement le clic normal pour l'instant.  L'interface utilisée s'appelle View.OnClickListener et nous oblige à définir la méthode void onClick (View vue).  C'est dans cette méthode qu'on définira la conduite à adopter en cas de clic. L'argument de type View est la vue sur laquelle le clic a été effectué. 4 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 5. LA GESTION DES ÉVÈNEMENTS Il existe d'autres interfaces avec d'autres méthodes à implémenter  View.OnLongClickListener pour les longs clics, avec la méthode :  boolean onLongClick(View vue)  elle doit retourner true une fois que l'action associée a été effectuée.  View.OnKeyListener pour gérer l'appui de touches avec la méthode :  boolean onKey (View vue, int codeTouche, KeyEvent inforEvent)  Cette méthode doit retourner true une fois que l'action associée a été effectuée.  View.OnTouchListener correspond à une simple touche qui s'effectue sur l'élément. On observe une touche au moment d'un clique puis au moment du relâchement. Rester appuyé après un clic est toujours une touche, même si on sort de l'élément. On y associe la méthode :  boolean onTouch (View vue, MotionEvent inforEvent)  Cette méthode doit retourner true une fois que l'action associée a été effectuée. 5 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 6. LA GESTION DES ÉVÉNEMENTS 6 private OnClickListener lAuditeurDuBouton = new OnClickListener() { public void onClick(View v) { // code lancé lorsque le bouton est cliqué } }; protected void onCreate(Bundle savedValues) { ... // Récupération du Button à partir de l'IHM en XML Button button = (Button)findViewById(R.id.leBeauBouton); // Enregistrer l'auditeur auprès du bouton button.setOnClickListener(lAuditeurDuBouton); ... } Exemple: Créer un auditeur d'événements Imene Sghaier-Développement d'Applications Mobiles Natives
  • 7. 7 public class Main extends Activity implements View.OnTouchListener, View.OnClickListener { Button b = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); b = (Button) findViewById(R.id.boutton); b.setOnTouchListener(this); b.setOnClickListener(this); } @Override public boolean onTouch(View v, MotionEvent event) { /* réagir au toucher */ return true; } @Override public void onClick(View v) { /* réagir au clic */ } } LA GESTION DES ÉVÉNEMENTS Exemple: Créer un auditeur d'événements Imene Sghaier-Développement d'Applications Mobiles Natives
  • 8. LA GESTION DES ÉVÉNEMENTS 8 public void onClick(View v) { switch(v.getId()) { //Si l'identifiant de la vue est celui du premier bouton case R.id.bouton1: /* agir pour bouton 1 */ break; //Si l'identifiant de la vue est celui du second boutoncase R.id.bouton2: /* agir pour bouton 2 */ break; /* etc. */ }}  si on a plusieurs boutons et qu'ils doivent effectuer des actions différentes, on peut par exemple passer par un switch pour savoir comment réagir en fonction du bouton: Imene Sghaier-Développement d'Applications Mobiles Natives
  • 9. 9 public class Main extends Activity{ private OnClickListener clickListenerBoutons = new OnClickListener(){ @Override public void onClick(View v) { /* réagir au clic pour les boutons 1 et 2*/}}; private OnTouchListener touchListenerBouton1 = new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { /* réagir au toucher pour le bouton 1*/ return false;}}; private OnTouchListener touchListenerBouton3 = new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { /* réagir au toucher pour le bouton 3*/ return false;}}; Button b = null; Button b2 = null; Button b3 = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); b = (Button) findViewById(R.id.boutton); b.setOnTouchListener(touchListenerBouton1); b.setOnClickListener(clickListenerBoutons); b2.setOnClickListener(clickListenerBoutons); b3.setOnTouchListener(touchListenerBouton3); }} LA GESTION DES ÉVÉNEMENTS Imene Sghaier-Développement d'Applications Mobiles Natives
  • 10. LA GESTION DES ÉVÉNEMENTS  On peut indiquer dans le fichier .xml de description d'IHM, la méthode qui sera lancée sous une certaine action sur un composant graphique  Par exemple, l'attribut android:onClick d'un composant graphique indique le nom de la méthode qui sera lancée si on clique sur cette View  Par exemple, dans le fichier de description de l'IHM, on écrit  Dans l'activité chargeant l'IHM contenant ce Button, on pourra écrire : 10 <Button android:id="@+id/push" ... android:onClick="onClickEmpiler"> </Button> public void onClickEmpiler(View v){ // traitement lancé lorsque l'utilisateur clique sur le Button d'id push } Imene Sghaier-Développement d'Applications Mobiles Natives
  • 11. PLAN DU CHAPITRE  La gestion des évènements  LesLes intentsintents  L’enchainement des écrans avec des intents explicites  Les intents implicites  Actions  Méthodes d’invocations d’intents  Appel Téléphonique  Envoi de mails  Voir tous les contacts  Voir un contact particulier  Editer un contact  Recherche google  Envoi d’un SMS  Afficher photos  Voir une page Web  Géolocalisation par coordonnées longitudes et latitude  Lancer Music Player  Ecouter chanson  Paramètres système 11 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 12. LES INTENTS  Un intent est une "intention" à faire quelque chose contenant des informations destinées à un composant Android. C'est un message asynchrone.  Les activités, services et récepteurs d'informations utilisent les Intents pour communiquer entre eux.  La navigation entre les écrans peut se faire de deux façons différentes : soit explicitement, soit implicitement. Dans les deux cas, l’ordre de changement d’activité est véhiculé par un objet de type Intent .  Un Intent ne contient pas obligatoirement explicitement le composant qui va le gérer. Dans ce cas c'est un Intent implicite.  Si l'Intent indique explicitement la classe du composant qui va le gérer c'est un Intent explicite  Un événement est une sous classe de android.content.Intent 12 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 13. LES INTENTS  Les Intents permettent de gérer l'envoi et la réception de messages afin de faire coopérer les applications.  Le but des Intents est de déléguer une action à un autre composant, une autre application ou une autre activité de l'application courante.  Un objet Intent contient les information (champs) suivantes:  le nom du composant ciblé (facultatif)  l'action à réaliser, sous forme de chaine de caractères  les données: contenu MIME et URI  des données supplémentaires (extra) sous forme de paires clè/valeur  une catégorie pour cibler un type d'application  des drapeaux (informations supplémentaires) 13 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 14. LES INTENTS  La façon dont sont renseignés ces champs détermine la nature ainsi que les objectifs de l'intent.  Ainsi, pour qu'un intent soit dit « explicite », il suffit que son champ composant soit renseigné. Ce champ permet de définir le destinataire de l'intent, celui qui devra le gérer.  Ce champ est constitué de deux informations : le package où se situe le composant, ainsi que le nom du composant. Ainsi, quand l'intent sera exécuté, Android pourra retrouver le composant de destination de manière précise. 14 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 15. PLAN DU CHAPITRE  La gestion des évènements  Les intents  L’enchainement des écrans avec desL’enchainement des écrans avec des intentsintents explicitesexplicites  Les intents implicites  Actions  Méthodes d’invocations d’intents  Appel Téléphonique  Envoi de mails  Voir tous les contacts  Voir un contact particulier  Editer un contact  Recherche google  Envoi d’un SMS  Afficher photos  Voir une page Web  Géolocalisation par coordonnées longitudes et latitude  Lancer Music Player  Ecouter chanson  Paramètres système 15 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 16. L’ENCHAINEMENT DES ECRANS AVEC DES INTENTS EXPLICITES  En fait cet Intent est envoyé à l'environnement d'exécution. Celui ci le redirige vers l'activité concernée 16 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 17. L’ENCHAINEMENT DES ECRANS AVEC DES INTENTS EXPLICITES  Pour passer d'une activité courante à une nouvelle activité, il faut écrire le code :  Et il faut bien évidement déclarer la nouvelle activité (le futur écran) dans le fichier manifest  public void startActivity (Intent intent) est une méthode de la classe Activity permettant de lancer une autre Activity (qui affichera un nouvel écran). 17 Intent i = new Intent(getApplicationContext(), NouvelleActivity.class); startActivity(i); Imene Sghaier-Développement d'Applications Mobiles Natives
  • 18. L’ENCHAINEMENT DES ECRANS AVEC DES INTENTS EXPLICITES  Si on ne s’attend pas à ce que la nouvelle activité nous renvoie un résultat, alors on peut l'appeler  void startActivity (Intent intent) (elle va commencer par un onCreate)  Si on veut un résultat en retour de la nouvelle activity on utilisera la méthode  void startActivityForResult(Intent intent, int requestCode)  requestCode un code passé qui permet d'identifier de manière unique un intent. 18 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 19. L’ENCHAINEMENT DES ECRANS AVEC DES INTENTS EXPLICITES  Quand l'activité appelée s'arrêtera, la première méthode de callback appelée dans l'activité précédente sera void onActivityResult(int requestCd, int resultCd, Intent data)  On retrouve requestCd, qui sera le même code que celui passé dans le startActivityForResult et qui permet de repérer quel intent a provoqué l'appel de l'activité dont le cycle vient de s'interrompre.  resultCd est quant à lui un code renvoyé par l'activité qui indique comment elle s'est terminée  typiquement Activity.RESULT_OK si l'activité s'est terminée normalement, ou  Activity.RESULT_CANCELED s'il y a eu un problème ou qu'aucun code de retour n'a été précisé).  Enfin, data est un intent qui contient des données. 19 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 20. L’ENCHAINEMENT DES ECRANS AVEC DES INTENTS EXPLICITES  Le premier argument du constructeur de l'Intent doit être le Context de l’application. Si l'appel est fait dans une activity MonActivity, this est souvent utilisé et convient car Activity dérive de Context  On utilise souvent MonActivity.this quand on est dans un listener d'événement. Mais, la méthode getApplicationContext() est la plus pratique et la plus sûre.  Les intents ont un champ « extra » qui leur permet de contenir des données à véhiculer entre les applications.  Un extra est en fait une clé à laquelle on associe une valeur.  Pour insérer un extra, il suffit d'utiliser la méthode Intent putExtra(String key, X val) 20 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 21. L’ENCHAINEMENT DES ECRANS AVEC DES INTENTS EXPLICITES  Les Intent servent d'enveloppes pour passer des informations d'une Activity à une autre. On utilise pour cela la m éthode  Exemple 21 public Intent putExtra(String nomDeLExtra, unType valeur) Intent i = new Intent(leContexte, envoyerFormulaire.class); i.putExtra("name", nom); i.putExtra("firstName", prenom); startActivity(i); Imene Sghaier-Développement d'Applications Mobiles Natives
  • 22. L’ENCHAINEMENT DES ECRANS AVEC DES INTENTS EXPLICITES  Dans une Activity, on récupére l'Intent qui a lancé l'Activity par getIntent(). On peut alors récupérer tous les extras de l'Intent par getExtras(), et, par la suite, un extra associé à une entrée par : getTypeEntrée(nomEntrée, valeurParDefaut),  valeurParDefaut est la valeur retournée si il n'y a pas d'extra associé à nomEntrée dans l'Intent  On récupère l'information de la manière suivante: 22 Bundle extras = getIntent().getExtras(); String nom = new String(extras.getString("name" ,null)); Ou String nom =getIntent().getExtras().getString("name"); Imene Sghaier-Développement d'Applications Mobiles Natives
  • 23. PLAN DU CHAPITRE  La gestion des évènements  Les intents  L’enchainement des écrans avec des intents explicites  LesLes intentsintents implicitesimplicites  Actions  Méthodes d’invocations d’intents  Appel Téléphonique  Envoi de mails  Voir tous les contacts  Voir un contact particulier  Editer un contact  Recherche google  Envoi d’un SMS  Afficher photos  Voir une page Web  Géolocalisation par coordonnées longitudes et latitude  Lancer Music Player  Ecouter chanson  Paramètres système 23 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 24. LES INTENTS IMPLICITES  À l'opposé des intents explicites se trouvent les intents implicites  Les intents implicites sont utilisés pour envoyer une requête à un destinataire, sans savoir qui il est  S'il s'agit de passer la main à une autre application, on donne au constructeur de l'Intent les données et l'URI (uniform ressource identifier) cible: l'OS est chargé de trouver une application pouvant répondre à l'Intent.  Ainsi, les applications destinataires sont soit fournies par Android, soit par d'autres applications téléchargées sur le Play Store par exemple.  Dans ce cas, on ne connaît pas de manière précise pour spécifier le destinataire de l'intent, c'est pourquoi on va s'appliquer à renseigner d'autres champs pour laisser Android déterminer qui est capable de réceptionner cet intent.  Il faut au moins fournir deux informations essentielles :  Une action : ce qu'on désire que le destinataire fasse.  Un ensemble de données : sur quelles données le destinataire doit effectuer son action. 24 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 25. LES INTENTS IMPLICITES  Il existe aussi d'autres informations, pas forcément obligatoires, mais qui ont aussi leur utilité propre le moment venu :  La catégorie : permet d'apporter des informations supplémentaires sur l'action à exécuter et le type de composant qui devra gérer l'intent.  Le type : pour indiquer quel est le type des données incluses. Normalement ce type est contenu dans les données, mais en précisant cet attribut vous pouvez désactiver cette vérification automatique et imposer un type particulier.  Les extras : pour ajouter du contenu à vos intents afin de les faire circuler entre les composants.  Les flags : permettent de modifier le comportement de l'intent. 25 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 26. LES INTENTS IMPLICITES  L’action d’un intent implicite est une chaîne de caractères qui symbolise le traitement à déclencher.  De nombreuses constantes sont définies dans le SDK pour les actions nativement disponibles comme:  Intent.ACTION_WEB_SEARCH pour demander de réaliser une recherche sur Internet  Intent.ACTION_CALL pour passer un appel téléphonique.  La catégorie, quant à elle, apporte une classification à l’action.  La catégorie Intent.CATEGORY_LAUNCHER positionne l’activité comme étant exécutable, cette catégorie est utilisée de pair avec l’action Intent.ACTION_MAIN.  Android positionne les activités de cette catégorie dans le lanceur d’applications.  La catégorie CATEGORY_HOME marque l’activité à afficher au démarrage du téléphone. 26 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 27. LES INTENTS IMPLICITES  Les données détaillent l’action de l’Intent dont elles dépendent directement.  Elles peuvent être d’ailleurs nulles, certaines actions n’appelant pas forcément à devoir être précisées.  Par exemple pour l’action ACTION_CALL, la donnée sera le numéro de téléphone à composer.  La donné est couplée avec un autre attribut qui est le type MIME de la donnée à traiter. 27 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 28. LES INTENTS IMPLICITES  Les données sont formatées à l'aide des URI (uniform ressource identifier)  Un URI est une chaîne de caractères qui permet d'identifier un endroit. Par exemple sur internet, ou dans le cas d'Android sur le périphérique ou une ressource.  Afin d'étudier les URI, on va faire l'analogie avec les adresses URL qui nous permettent d'accéder à des sites internet. En effet, un peu à la manière d'un serveur, nos fournisseurs de contenu vont répondre en fonction de l'URI fournie. De plus, la forme générale d'une URI rappelle fortement les URL.  Prenons l'exemple du site de ISETN avec une URL inventée : http://www.isetn.rnu.tn/acceuil/actualités.html  On identifie plusieurs parties :  http://  www.isetn.rnu.tn  /acceuil/actualités.html 28 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 29. LES INTENTS IMPLICITES  La syntaxe d'un URI peut être analysée de la manière suivante (les parties entre accolades {} sont optionnelles) : <schéma><schéma> :: <information><information> {{ ?? <requête><requête> }} {{ ## <fragment><fragment> }}  Le schéma décrit quelle est la nature de l'information.  S'il s'agit d'un numéro de téléphone, alors le schéma sera tel, s'il s'agit d'un site internet, alors le schéma sera http, etc.  L'information est la donnée en tant que telle. Cette information respecte elle aussi une syntaxe, mais qui dépend du schéma cette fois-ci.  Ainsi, pour un numéro de téléphone, on peut nous contenter d'insérer le numéro tel:0606060606, mais pour des coordonnées GPS il faudra séparer la latitude de la longitude à l'aide d'une virgule geo:123.456789,-12.345678.  Pour un site internet, il s'agit d'un chemin hiérarchique. 29 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 30. LES INTENTS IMPLICITES  Pour créer un objet URI, c'est simple, il suffit d'utiliser la méthode statique  Par exemple, pour envoyer un SMS à une personne, on utilisera l'URI :  On peut aussi indiquer plusieurs destinataires et un corps pour ce message : 30 Uri Uri.parse(String uri); Uri sms = Uri.parse("sms:0606060606"); Uri.parse("sms:0606060606,0606060607?body=Salut%20lesamies"); Imene Sghaier-Développement d'Applications Mobiles Natives
  • 31. LES INTENTS IMPLICITES  Le MIME est un identifiant pour les formats de fichier.  Par exemple,  type MIME text. Si une donnée est accompagnée du type MIME text, alors les données sont du texte.  On trouve aussi audioet video par exemple. Il est ensuite possible de préciser un sous-type afin d'affiner les informations sur les données, par exemple audio/mp3 et audio/wav sont deux types MIME qui indiquent que les données sont sonores, mais aussi de quelle manière elles sont encodées.  Les types MIME que nous venons de voir son standards, c'est-à-dire qu'il y a une organisation qui les a reconnus comme étant légitimes.  Mais si on veut créer ses propres types MIME, il existe une petite syntaxe à respecter pour les types personnalisés [https://fr.wikipedia.org/wiki/Type_MIME] 31 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 32. LES INTENTS IMPLICITES- ACTIONS  Liste des actions standard que les intentions peuvent utiliser pour les activités de lancement (généralement par le biais startActivity (intention). 32  ACTION_MAIN  ACTION_VIEW  ACTION_ATTACH_DATA  ACTION_EDIT  ACTION_PICK  ACTION_CHOOSER  ACTION_GET_CONTENT  ACTION DIAL  ACTION_ANSWER  ACTION_INSERT  ACTION_DELETE  ACTION_RUN  ACTION_SYNC  ACTION_PICK_ACTIVITY  ACTION_SEARCH  ACTION WEB SEARCH  ACTION_ACTION_CALL  ACTION_SEND  ACTION_SENDTO  ACTION_WEB_ACTION_FACT ORY_TEST http://developer.android.com/reference/android/content/Intent.html Imene Sghaier-Développement d'Applications Mobiles Natives
  • 33. LES INTENTS IMPLICITES- MÉTHODES D’INVOCATION D’INTENTS 33 Méthodes Fonctionnalités startActivity(intent) Lance une activity sendBroadcast(intent) Envoie l’intend à n’importe quel composant BraodcastReceiver interessé startService(intent) ou binService(intent,…) Communique avec un service en arrière plan Imene Sghaier-Développement d'Applications Mobiles Natives
  • 34.  Pour passer d'une activité courante à une nouvelle activité, il faut écrire le code :  Il ne faut pas oublier d’ajouter les permissions nécessaire au fichier manifest.xml <uses-permission android:name="android.permission.CALL_PHONE" > </uses-permission> INTENTS IMPLICITES-APPEL TELPHONIQUE 34 Button b = (Button)findViewById(R.id.Button01); b.setOnClickListener(new OnClickListener() { public void onClick(View v) {Uri telnumber = Uri.parse("tel:0248484000");Intent call = new Intent(Intent.ACTION_DIAL, telnumber); startActivity(call); } }); Imene Sghaier-Développement d'Applications Mobiles Natives
  • 35. LES INTENTS IMPLICITES- ENVOI DE MAILS Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); String[] recipients = new String[]{"my@email.com", "",}; emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, recipients); emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Test"); emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Message"); emailIntent.setType("text/plain"); startActivity(Intent.createChooser(emailIntent, "Send mail...")); finish(); 35 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 36. LES INTENTS IMPLICITES- VOIR TOUS LES CONTACTS String myData = "content://contacts/people/"; Intent myActivity2 = new Intent(Intent.ACTION_VIEW, Uri.parse(myData)); startActivity(myActivity2); 36 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 37. LES INTENTS IMPLICITES- VOIR UN CONTACT PARTICULIER String myData = "content://contacts/people/2"; Intent myActivity2 = new Intent(Intent.ACTION_VIEW, Uri.parse(myData)); startActivity(myActivity2); //Ceci affiche le contact numéro 2 dans le repertoire 37 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 38. LES INTENTS IMPLICITES- EDITER UN CONTACT String myData = "content://contacts/people/2"; Intent myActivity2 = new Intent(Intent.ACTION_EDIT, Uri.parse(myData)); startActivity(myActivity2); //Ceci permet d’éditer le contact numéro 2 38 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 39. LES INTENTS IMPLICITES- RECHERCHE GOOGLE Intent intent = new Intent (Intent.ACTION_WEB_SEARCH ); intent.putExtra(SearchManager.QUERY, "papillons"); startActivity(intent); //Ceci lance une recherche google à propos des papillons 39 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 40. LES INTENTS IMPLICITES- ENVOI D’UN SMS Intent intent = new Intent( Intent.ACTION_SENDTO, Uri.parse("sms:21314151")); intent.putExtra("sms_body", "Vous allez à la réunion?"); startActivity(intent); //Ceci envoie un SMS « Vous allez à la réunion? » au //numéro 21314151 40 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 41. LES INTENTS IMPLICITES- AFFICHER PHOTOS Intent myIntent = new Intent(); myIntent.setType("image/pictures/*"); myIntent.setAction(Intent.ACTION_GET_CONTENT); startActivity(myIntent); //On pourra bien évidement choisir un autre //repertoire 41 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 42. <uses-permission android:name="android.permission.INTERNET " > </uses-permission> LES INTENTS IMPLICITES- VOIR UNE PAGE WEB String myData = "http://www.youTube.com"; Intent myActivity2 = new Intent(Intent.ACTION_VIEW, Uri.parse(myData)); startActivity(myActivity2);  Il ne faut pas oublier d’ajouter les permissions nécessaires dans le fichier manifeste : 42 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 43. <uses-permission android:name=" android.permission.ACCESS_COARSE_LOCATION " > </uses-permission> LES INTENTS IMPLICITES- GEOLOCALISATION PAR COORDONNÉES LONGITUDE ET LATITUDE String geoCode ="geo:41.5020952,-81.6789717"; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(geoCode)); startActivity(intent); 43 • Il ne faut pas oublier d’ajouter les permissions nécessaires dans le fichier manifeste : Imene Sghaier-Développement d'Applications Mobiles Natives
  • 44. LES INTENTS IMPLICITES- LANCER MUSIC PLAYER Intent i = new Intent("android.intent.action.MUSIC_PLAYER"); startActivity(i); 44 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 45. LES INTENTS IMPLICITES- ECOUTER CHANSON SUR CARTE SD Intent i=new Intent(android.content.Intent.ACTION_VIEW); Uri data = Uri.parse("file:///sdcard/tiratata.mp3"); String type = "audio/mp3"; i.setDataAndType(data, type); startActivity(i); 45 Imene Sghaier-Développement d'Applications Mobiles Natives
  • 46. LES INTENTS IMPLICITES- PARAMETRES SYSTEME Intent i=new Intent(android.provider.Settings.ACTION_SETTINGS); startActivity(intent); 46 Imene Sghaier-Développement d'Applications Mobiles Natives