CRÉATION D'INTERFACE UTILISATEUR (3)
USER INTERFACE CREATION (3)
CRÉATION D’APPLICATIONS ET DÉCOUVERTE DES ACTIVITÉS ET DES INTENTS
CREATION OF APPLICATIONS AND DISCOVERY OF ACTIVITIES AND INTENTS
E.I. Djebbar
Département de Génie des systèmes informatiques
Department of Computer Systems Engineering
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
DÉVELOPPEMENT DES APPLICATIONS MOBILES (DAM) 1
MOBILE APPLICATION DEVELOPMENT National Polytechnic School of Oran-Maurice Audin-
PRINCIPE DE FONCTIONNEMENT DES INTENTS
Les objets Intent ont essentiellement trois utilisations : ils permettent de démarrer
une activité au sein de l’application courante ou de solliciter d’autres applications et
d’envoyer des informations.
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
NAVIGUER ENTRE ÉCRANS AU SEIN D’UNE APPLICATION
Une application est souvent composée de plusieurs écrans qui s’enchaînent les uns à
la suite des autres en fonction de l’utilisateur et chaque écran est représenté par une
activité définissant son interface utilisateur et sa logique. La principale utilisation d’un
Intent est le démarrage de ces activités (une à la fois) permettant cet enchaînement.
De façon plus générale, chaque composant d’une application nécessitera l’emploi d’un
Intent pour être démarré
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
DÉMARRER UNE ACTIVITÉ
Pour démarrer une activité sans attendre de retour, utilisez la méthode startActivity
avec comme paramètre une instance de la classe Intent spécifiant le type de classe de
l’activité à exécuter :
Intent intent = new Intent(this,[Link]);
startActivity(intent);
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
DÉMARRER UNE ACTIVITÉ ET OBTENIR UN RETOUR
Lancer une activité enfant et en connaître sa valeur de retour avec la méthode
startActivityForResult
...
private static final int CODE_MON_ACTIVITE = 1;
...
Intent intent = new Intent(this,[Link]);
startActivityForResult(intent, CODE_MON_ACTIVITE);
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
RENVOYER UNE VALEUR
@Override
public void onClick(View v) {
switch([Link]()){
case [Link].button1:
setResult(RESULT_OK);
finish();
break;
case [Link].button2:
setResult(RESULT_CANCELED);
finish();
break;
}
}
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
RÉCUPÉRER LA VALEUR DE RETOUR
AGIR EN FONCTION DE LA VALEUR DE RETOUR
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode){
case CODE_MON_ACTIVITE:
switch(resultCode){
case RESULT_OK:
[Link](this, "Action validée", Toast.LENGTH_LONG).show();return;
case RESULT_CANCELED:
[Link](this, "Action annulée", Toast.LENGTH_LONG).show();return;
default: return;
}
default: return;
} 7
}
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
SOLLICITER D’AUTRES APPLICATIONS
L’envoi d’un Intent permet également de demander à un composant d’une autre
application que la vôtre de traiter l’action que vous souhaiteriez réaliser. C’est le
système qui décide alors de l’application à utiliser pour accomplir votre souhait. Pour
décider du composant le plus approprié, le système se base sur les informations que
vous spécifiez dans votre objet Intent : action, données, catégorie, etc.
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
SOLLICITER D’AUTRES APPLICATIONS
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
DÉLÉGUER AU SYSTÈME LE CHOIX DE L’APPLICATION
Nous souhaitons composer un numéro de téléphone. Nous allons utiliser le type
d’action ACTION_DIAL
Composer un numéro de téléphone
Uri uri = [Link]("[Link]
Intent intent = new Intent(Intent.ACTION_DIAL, uri);
startActivity(intent)
10
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
DÉLÉGUER AU SYSTÈME LE CHOIX DE L’APPLICATION
11
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
ACTIONS NATIVES
12
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
ACTIONS NATIVES
13
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
DÉMARRER UN NAVIGATEUR INTERNET
Démarrer un navigateur internet
private void doWebBrowser(){
Uri uri = [Link]("[Link]
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
14
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
ACCORDER LES PERMISSIONS LIÉES AUX ACTIONS
Certaines actions requièrent des privilèges spéciaux qui vous amèneront à ajouter
des permissions dans le fichier de configuration de votre application.
Par exemple, pour émettre un appel depuis votre application, il ne suffira pas
uniquement de créer un objet Intent avec l’action ACTION_CALL.
Il vous faudra également ajouter la permission [Link].CALL_PHONE
15
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
ACCORDER LES PERMISSIONS LIÉES AUX ACTIONS
Uri uri = [Link]("[Link]
Intent intent = new Intent(Intent.ACTION_CALL, uri);
startActivity(intent);
<manifest ...
<uses-permission
android:name="[Link].CALL_PHONE" />
</manifest>
16
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
LES INTENTS: EMBARQUER DES DONNÉES SUPPLÉMENTAIRES
La classe Intent dispose de méthodes putExtra et getExtras grâce auxquelles un objet
de type Bundle véhiculera vos données d’une activité à une autre.
L’échange des données se fait par l’association d’une clé (représentée par une chaîne
de caractères) à une donnée à échanger. Pour ajouter chaque donnée à échanger, il
faut appeler la méthode putExtra avec la clé et la donnée à échanger. La méthode
putExtra dispose d’une surcharge pour pratiquement tous les types de données
primitifs : int, float, String, etc.
17
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
AJOUTER UNE DONNÉE À UN INTENT
Intent intent = new Intent(this,[Link]);
[Link]("maclé", "hello !");
startActivity(intent);
18
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
RÉCUPÉRER UNE DONNÉE D’UN BUNDLE
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
Bundle extra = [Link]().getExtras();
if(extra != null)
String data = [Link]("maclé");
}
19
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
DIFFUSER ET RECEVOIR DES INTENTS
Un Intent peut être diffusé à l’ensemble des applications du système pour
transmettre des informations à destination des autres applications, que ce soit pour
demander la réalisation d’actions spécifiques, ou pour fournir des informations sur
l’environnement (appel entrant, réseau Wi-Fi connecté, etc.).
Ce mécanisme de diffusion permet à chaque processus de communiquer un état
spécifique, une information ou une action de manière homogène à l’ensemble de ses
pairs. Dans ce contexte, ces Intents sont alors appelés des Broadcast Intents alors que
ses récepteurs sont appelés les Broadcast Receiver ou « récepteurs d’Intents ».
20
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
DIFFUSER UN INTENT
private void doBroadcast(){
Intent intent = new Intent([Link]);
[Link]( "extra", "hello !");
sendBroadcast(intent);
}
21
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
LES MESSAGES D’INFORMATIONS NATIFS
Android, à l’instar des actions, propose plusieurs actions prédéfinies et utilisées pour
communiquer sur l’état d’un service ou le changement d’un composant du système.
22
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
LES MESSAGES D’INFORMATIONS NATIFS
23
Ecole Nationale Polytechniques d’Oran-Maurice Audin-
EXEMPLE ACTION_BOOT_COMPLETED
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_main);
if (Intent.ACTION_BOOT_COMPLETED!=null) {
[Link](getApplicationContext(), "Device is booting ...", Toast.LENGTH_LONG).show();
}
}
} 24
Ecole Nationale Polytechniques d’Oran-Maurice Audin-