Chapitre 4 Controles Gestion Evenements

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 42

LES CONTRÔLES ET LA GESTION

DES ÉVÉNEMENTS

Imene Sghaier

2017-2018
PLAN DU CHAPITRE

 La gestion des évènements


 Les intents

 L’enchainement des ecrans avec des intents


explicites
 Les intents implicites

Imene Sghaier-Développement d’applications mobiles


LA GESTION DES ÉVÈNEMENTS
 Deux moyens :
 créer un auditeur d'événements (classe qui implémente une
interface connue) et l'enregistrer auprès du composant (View)
 les View sont elles mêmes auditrices de certains evénements :
(touché de l'écran par exemple). Il suffit donc de spécialiser la
méthode adaptée et lancée lorsque l'événement survient
 1°) est classique (Java SE, Java ME). Les 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 l)
 2°) permet d'écrire directement la gestion de certains événements qui

peuvent se produire dans la View

Imene Sghaier-Développement d’applications mobiles


LA GESTION DES ÉVÈNEMENTS
 On va 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 plusieurs interfaces, une pour chaque type
d'actions, nous allons voir uniquement le clic normal pour
l'instant. Uniquement des méthodes relatives aux cliques
pourront être implémentées.
 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


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


LA GESTION DES ÉVÉNEMENTS
Exemple: Créer un auditeur d'événements

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);
...
} 6

Imene Sghaier-Développement d’applications mobiles


LA GESTION DES ÉVÉNEMENTS
Exemple: Créer un auditeur d'événements
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 */
} 7
}
Imene Sghaier-Développement d’applications mobiles
LA GESTION DES ÉVÉNEMENTS
 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:

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. */ }}

Imene Sghaier-Développement d’applications mobiles


LA GESTION DES ÉVÉNEMENTS
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); 9
b3.setOnTouchListener(touchListenerBouton3); }}

Imene Sghaier-Développement d’applications mobiles


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

<Button
android:id="@+id/push"
...
android:onClick="onClickEmpiler">
</Button>
 Dans l'activité chargeant l'IHM contenant ce Button, on pourra
écrire :
public void onClickEmpiler(View v){
// traitement lancé lorsque l'utilisateur clique sur le Button d'id
push 10
}
Imene Sghaier-Développement d’applications mobiles
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 Intent 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 11
android.content.Intent
Imene Sghaier-Développement d’applications mobiles
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
clef/valeur
 une catégorie pour cibler un type d'application
 des drapeaux (informations supplémentaires)
12

Imene Sghaier-Développement d’applications mobiles


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.

13

Imene Sghaier-Développement d’applications mobiles


LES INTENTS
 À l'opposé des intents explicites se trouvent les intents «
implicites ». Dans ce cas, on ne connaît pas de manière précise 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.
 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. 14

Imene Sghaier-Développement d’applications mobiles


LES INTENTS
 L’action d’un intent 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.
 Les données détaillent l’action de l’Intent dont elle
dépend directement. Elles peuvent être d’ailleurs nulle,
certaines actions n’appelant pas forcément à devoir
être précisées. Pour illustration, dans l’exemple
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.
15

Imene Sghaier-Développement d’applications mobiles


LES INTENTS

 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.

16

Imene Sghaier-Développement d’applications mobiles


L’ENCHAINEMENT DES ECRANS AVEC DES
INTENTS EXPLICITES
 Pour passer d'une activité courante à une nouvelle activité, il
faut écrire le code :

Intent i = new Intent(getApplicationContext(),


NouvelleActivity.class);
startActivity(i);

 Et il faut déclarer la nouvelle activité NouvelleActivity.class


(le futur écran) dans AndroidManifest.xml
 public void startActivity (Intent intent) est une méthode de la
classe Activity permettant de lancer une autre Activity (qui
affichera un nouvel écran).
 Si vous ne vous attendez pas à ce que la nouvelle activité
vous renvoie un résultat, alors vous pouvez l'appeler
 void startActivity (Intent intent) (elle va commencer par
17
un onCreate)

Imene Sghaier-Développement d’applications mobiles


L’ENCHAINEMENT DES ECRANS AVEC DES
INTENTS EXPLICITES

 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.
 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 requestCode, 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. resultCode 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
18
qu'aucun code de retour n'a été précisé). Enfin, intent est un
intent qui contient éventuellement des données.
Imene Sghaier-Développement d’applications mobiles
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

19

Imene Sghaier-Développement d’applications mobiles


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 si l'objet manipulant l'Intent n'hériste pas
de Context.
 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.
20

Imene Sghaier-Développement d’applications mobiles


L’ENCHAINEMENT DES ECRANS AVEC DES
INTENTS EXPLICITES
 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)

21

Imene Sghaier-Développement d’applications mobiles


L’ENCHAINEMENT DES ECRANS AVEC
DES INTENTS EXPLICITES
 Les Intent servent parfois d'enveloppes pour passer
des informations d'une Activity à une autre. On
utilise pour cela

public Intent putExtra(String nomDeLExtra, unType


valeur)

 Exemple

Intent i = new Intent(leContexte,


envoyerFormulaire.class);
i.putExtra("name", nom);
i.putExtra("firstName", prenom);
startActivity(i);
22

Imene Sghaier-Développement d’applications mobiles


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:

Bundle extras = getIntent().getExtras();


String nom = new String(extras.getString("name" ,null));
Ou String nom =getIntent().getExtras().getString("name");
23

Imene Sghaier-Développement d’applications mobiles


LES INTENTS IMPLICITES
 Les intents implicites sont utilisés pour envoyer une requête à
un destinataire, sans savoir qui il est
 Ainsi, les applications destinataires sont soit fournies par
Android, soit par d'autres applications téléchargées sur le Play
Store par exemple.
 Les données sont formatées à l'aide des URI.
 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 du Zéro avec une URL inventée
: http://www.siteduzero.com/forum/android/aide.html. On
identifie plusieurs parties :
 http://
 www.siteduzero.com
 /forum/android/aide.html
24

Imene Sghaier-Développement d’applications mobiles


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> : <information> { ? <requête> } { # <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, vous pouvez vous 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.
 La requête permet de fournir une précision par rapport à l'information.
 Le fragment permet enfin d’accéder à une sous-partie de l'information.
 Pour créer un objet URI, c'est simple, il suffit d'utiliser la méthode
statique Uri Uri.parse(String uri);
 Par exemple, pour envoyer un SMS à une personne, on utilisera l'URI :
Uri sms = Uri.parse("sms:0606060606");
 On peut aussi indiquer plusieurs destinataires et un corps pour ce
message :
Uri.parse("sms:0606060606,0606060607?body=Salut%20lesamies") 25
;

Imene Sghaier-Développement d’applications mobiles


LES INTENTS IMPLICITES
 Le MIME est un identifiant pour les formats de fichier. Par
exemple, il existe un 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 vous vouliez créer vos propres types
MIME ? Vous n'allez pas demander à l'organisation de les
valider, ils ne seront pas d'accord avec vous. C'est pourquoi il
existe une petite syntaxe à respecter pour les types
personnalisés : vnd.votre_package.le_type, ce qui peut donner
par exemple vnd.sdz.chapitreTrois.contact_telephonique
26
 types MIME sur https://fr.wikipedia.org/wiki/Type_MIME
Imene Sghaier-Développement d’applications mobiles
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).
 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_FACTORY_TEST 27

Imene Sghaier-Développement d’applications mobiles


LES INTENTS IMPLICITES- MÉTHODES
D’INVOCATION D’INTENTS

 Pour la liste des actions voir:


http://developer.android.com/reference/android/content/Intent 28
.html ACTION_
Imene Sghaier-Développement d’applications mobiles
INTENTS IMPLICITES_APPEL TELPH
 Pour passer d'une activité courante à une nouvelle activité, il
faut écrire le code :

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);
} });

 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> 29

Imene Sghaier-Développement d’applications mobiles


LES INTENTS IMPLICITES- ENVOIE DE MAIL

Intent emailIntent = new


Intent(android.content.Intent.ACTION_SEND);
String[] recipients = new String[]{"[email protected]", "",};
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();

30

Imene Sghaier-Développement d’applications mobiles


LES INTENTS IMPLICITES- VOIR TOUS LES
CONTACTS

String myData = "content://contacts/people/";


Intent myActivity2 = new
Intent(Intent.ACTION_VIEW,
Uri.parse(myData));
startActivity(myActivity2);

31

Imene Sghaier-Développement d’applications mobiles


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);

32

Imene Sghaier-Développement d’applications mobiles


LES INTENTS IMPLICITES- EDITER UN CONTACT

String myData = "content://contacts/people/2";


Intent myActivity2 = new
Intent(Intent.ACTION_EDIT,
Uri.parse(myData));
startActivity(myActivity2);

33

Imene Sghaier-Développement d’applications mobiles


LES INTENTS IMPLICITES- RECHERCHE GOOGLE

Intent intent = new Intent


(Intent.ACTION_WEB_SEARCH );
intent.putExtra(SearchManager.QUERY,
"papillons");
startActivity(intent);

34

Imene Sghaier-Développement d’applications mobiles


LES INTENTS IMPLICITES- ENVOIE 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);

35

Imene Sghaier-Développement d’applications mobiles


LES INTENTS IMPLICITES- AFFICHER PHOTOS

Intent myIntent = new Intent();


myIntent.setType("image/pictures/*");
myIntent.setAction(Intent.ACTION_GET_CONTENT);
startActivity(myIntent);

36

Imene Sghaier-Développement d’applications mobiles


LES INTENTS IMPLICITES- VOIR 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 :
<uses-permission
android:name="android.permission.INTERNET " >
</uses-permission>
37

Imene Sghaier-Développement d’applications mobiles


LES INTENTS IMPLICITES- GEOLOCALISATION PAR
COORDONNÉES LONG/LAT

String geoCode ="geo:41.5020952,-81.6789717";


Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse(geoCode));
startActivity(intent);

• Il ne faut pas oublier d’ajouter les permissions nécessaires dans le


fichier manifeste :

<uses-permission android:name="
android.permission.ACCESS_COARSE_LOCATION " >
</uses-permission>
38

Imene Sghaier-Développement d’applications mobiles


LES INTENTS IMPLICITES- LANCER MUSIC
PLAYER

Intent myActivity2 = new


Intent("android.intent.action.MUSIC_PLAYER");
startActivity(myActivity2);

39

Imene Sghaier-Développement d’applications mobiles


LES INTENTS IMPLICITES- ECOUTER CHANSON
SUR CARTE SD

Intent myActivity2 =
new
Intent(android.content.Intent.ACTION_VIEW);
Uri data = Uri.parse("file:///sdcard/tiratata.mp3");
String type = "audio/mp3";
myActivity2.setDataAndType(data, type);
startActivity(myActivity2);

40

Imene Sghaier-Développement d’applications mobiles


LES INTENTS IMPLICITES- PARAMETRES
SYSTEME

Intent intent = new


Intent(android.provider.Settings.ACTION_SETTINGS);
startActivity(intent);

41
RÉFÉRENCES

 Cours de Jean-Marc Farinone, maître de


conférences au Conservatoire National des Arts
et Métiers (CNAM) de Paris
 Cours "Développement sous Android" de Jean-
François Lalande, INSA, Institut National des
Sciences Appliquées, Centre VAL DE LOIRE

42

Vous aimerez peut-être aussi