PROGRAMMATION ANDROIDlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/... · 2019. 11. 14. ·...
Transcript of PROGRAMMATION ANDROIDlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/... · 2019. 11. 14. ·...
PROGRAMMATION ANDROID
Ahcène Bounceur
Université de Bretagne Occidentale
1
COMMUNICATION ENTRE APPLICATIONS : INTENTS
2
Chapitre 3
Au cœur du système Android, les Intents forment un mécanisme
sophistiqué et complet permettant aux activités et aux applications
d'interagir entre elles.
3
IDÉE DES INTENTS
¢ La philosophie d'Android� Les activités sont petites et utilisent un seul écran.
¢ Conséquence� Un besoin d'une approche simple pour passer d'une
activité à une autre¢ Approche : utiliser les Intents
� Une description de l'opération à effectuer� Elle peut référencer un nom de classe d'une activité ou
d'une URI� Dans tous les cas, une nouvelle activité doit être décrite
dans le fichier AndroidManifest.xml afin de pouvoir l'invoquer.
4
COMMUNICATION ENTRE APPLICATIONS
¢ La communication interne du système Android est basée sur l'envoi et la réception de messages exprimant l'intention d'une action.
5
Intent = Intention
Anglais Anglais/Français
COMMUNICATION ENTRE APPLICATIONS
¢ L'envoi des Intents au système se fait de deux façons : � soit en ciblant un composant précis d'une application
(mode explicite), � soit en laissant le système déléguer le traitement (ou
non) de cette demande au composant le plus approprié (mode implicite).
¢ Un système de filtres permet à chaque application de filtrer et de gérer uniquement les Intents qui sont pertinents pour celle-ci.
¢ Une application peut ainsi être dans un état d'inactivité, tout en restant à l'écoute des intentions circulant dans le système.
6
PRINCIPE DE FONCTIONNEMENT
¢ Les objets Intent ont essentiellement trois utilisations : ils permettent� de démarrer une activité au sein de l'application
courante� de solliciter d'autres applications � d'envoyer des informations.
¢ Les Intents ont aussi d'autres utilisations, dont le démarrage d'un service (par exemple pour un service de lecteur multimédia, les actions pourront être de lire une musique, passer à la chanson suivante ou encore mettre la lecture en pause en cas d'appel entrant).
7
PRINCIPE DE FONCTIONNEMENT
¢ Il est aussi possible de vouloir diffuser un objet Intent à plusieurs applications (par exemple pour informer l'ensemble des applications ouvertes que la batterie est défaillante).
8
Créer une Intent
Intent intent = new Intent();
9
Créer une Intent avec une Action
Intent intent = new Intent(String action)
10
Créer une Intent avec une Action
Intent intent = new Intent();intent.setAction(String action)
11
Récupérer l’Action d’une Intent
String action = intent.getAction();
12
Créer une Intent avec une Action et une donnée
Intent intent = new Intent(String action, Uri uri)
13
Créer une Intent avec une Donnée
Intent intent = new Intent();intent.setData(Uri data)
14
Récupérer la donnée d’une Intent
Uri data = intent.getData();
15
Créer une Intent avec des Catégories
Intent intent = new Intent();intent.addCategory(String category1)intent.addCategory(String category2)intent.addCategory(String category3)...
16
intent.removeCategory(String category)
Récupérer les catégories d’une Intent
Set<String> categories = intent.getCategories();
17
Créer/Supprimer une Intent avec des Flags
Intent intent = new Intent();
intent.addFlags(int flag1)intent.addFlags(int flag2)intent.addFlags(int flag3)ouintent.addFlags(flag1 | flag2 | flag3)
intent.removeFlags(int flags)
18
Créer/Supprimer une Intent avec des Flags
Intent intent = new Intent();
intent.addFlags(64)intent.addFlags(16)intent.addFlags(1)ouintent.addFlags(64 | 16 | 1)
intent.removeFlags(int flags)
19
Créer/Supprimer une Intent avec des Flags
Intent intent = new Intent();
intent.addFlags(81)
intent.removeFlags(int flags)
20
Créer/Supprimer une Intent avec des Flags
Intent intent = new Intent();
intent.addFlags(64 | 16)intent.addFlags(1)intent.removeFlags(17)
intent.getFlags() = ?
21
Créer/Supprimer une Intent avec des Flags
Intent intent = new Intent();
intent.addFlags(64 | 16) // 1010000intent.addFlags(1) // 1010001intent.removeFlags(17) // 1000000
intent.getFlags() = 64; // 1000000
22
Récupérer les Flags d’une Intent
int flags = intent.getFlags();
23
int ?1010001 (tous les flags)=0000001 (flag 1)ou0010000 (flag 2)ou1000000 (flag 3)
81
1
16
64
INTENT COMME HASHMAP
24
Intent intent = new Intent();
intent.putExtra("a", "Salut");intent.putExtra("b", "Bonjour");intent.putExtra("c", 15);
String v1 = intent.getStringExtra("a");String v2 = intent.getStringExtra("b");Integer v3 = intent.getIntExtra("c", -1);
System.out.println(v1);System.out.println(v2);System.out.println(v3);
Créer une Intent avec des Données
Bundle bundle = new Bundle()bundle.putString(String clé1, String valeur1)bundle.putInt(String clé2, int valeur2)...
Intent intent = new Intent()intent.putExtras(bundle)
25
putXXXX = putBoolean, putBooleanArray, putDouble, putDoubleArray, putString, putStringArray, etc.
Récupérer les données d’une Intent
Intent intent = getIntent()Bundle bundle = intent.getExtras()
String s = bundle.getString(String clé1)int i1 = bundle.getInt(String clé2)int i2 = bundle.getInt(String clé3, int v)
...
26
getXXXX = getBoolean, getBooleanArray, getDouble, getDoubleArray, getString, getStringArray, etc.
Créer une Intent avec des Données
Intent intent = new Intent()
intent.putExtra(String clé1, String valeur1)intent.putExtra(String clé2, int valeur2)...
27
Créer les données d’une Intent
Intent intent = getIntent()
String s = intent.getStringExtra(String clé1)int i = intent.getIntExtra(String clé2, int v)
...
28
getXXXXExtra = getBooleanExtra, getDoubleExtra, getStringExtra, getStringArrayExtra, etc.
DÉMARRER UNE ACTIVITÉ DE MANIÈREEXPLICITE
29
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.
30
NAVIGUER ENTRE ÉCRANS AU SEIN D'UNE APPLICATION
¢ Il existe deux méthodes pour démarrer une activité, en fonction de la logique de l'interface : � parfois nous aurons besoin de savoir comment s'est
déroulée l'activité (et obtenir un retour lors de son arrêt), � parfois non
31
LA CLASSE INTENT : CONSTRUCTEUR
� De manière explicite (avec les Intents) :
Intent intent = new Intent(Context, Class);
¢ Le constructeur de la classe Intent prend les paramètres suivants : � Context : le contexte à partir duquel l'Intent est créé et sera
envoyé. Ce paramètre fait référence la plupart du temps à l'activité en cours pointée par le mot clef this ;
� Class<?> : un type de classe Java héritant de la classe Activity.
32
Créer une Intent pour laner une activité/service
¢ De manière explicite (avec les Intents) :
Intent intent = new Intent(context, MonActivite.class);
Intent intent = new Intent(context, MonService.class);
33
Créer une Intent pour laner une activité/service
¢ De manière explicite (avec les Intents) :
Intent intent = new Intent(context, MonActivite.class);intent.setAction(String action)
Intent intent = new Intent(context, MonService.class);intent.setAction(String action)
34
Créer une Intent pour laner une activité/service
¢ De manière explicite (avec les Intents) :
Intent intent = new Intent(context, MonActivite.class);intent.setAction(String action)intent.addCategory(String categorie)intent.addFlags(int flags)
Intent intent = new Intent(context, MonService.class);intent.setAction(String action)intent.addCategory(String categorie)intent.addFlags(int flags)
35
Lancer une Activité
¢ De manière explicite (avec les Intents) :
startActivity(Intent intent)
startActivityForResult(Intent intent, int rc)
36
requestCode
LANCER UN SERVICE
¢ De manière explicite (avec les Intents) :
startService(Intent intent)
startForegroundService(Intent intent)
37
Version : OREO
DÉMARRER UNE ACTIVITÉ
¢ De manière explicite (avec les Intents) :
Intent intent = new Intent(this, MySubActivity.class);
startActivity(intent);
38
Le nom de la classe à lancer
DÉMARRER UNE ACTIVITÉ
¢ De manière explicite (avec les Intents) :
Intent intent = new Intent(uneActivite, MySubActivity.class);intent.addFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK);uneActivite.startActivity(intent);
39
Lorsque l’intent est appelée à partir d’une classe qui n’est pas une activité !
DÉMARRER UNE SOUS-ACTIVITÉ
¢ Quatre cas :� Cas 1 :
¢ sans échange de données (A) ¢ envoi de données à l’activité secondaire "Intent" (B)
� Cas 2 : récupération de la valeur requestCode� Cas 3 : utilisation de la valeur de resultCode. Cette valeur est
utilisée pour recevoir une donnée liée à un choix,� Cas 4 : réception de données de l’activité secondaire "intent"
40
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 1
41
Activité 1 Activité 2
startActivity(intent)
finish()
CAS 1 (A)
42
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 1 (A)Sans envoi de données
¢ Considérons deux activités :� Une activité principale : MyActivity� Une activité secondaire (sous-activité) : MySubActivity
43
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 1 (A)Sans envoi de données
¢ L'activité principale : MyActivity
public class MyActivity extends Activity {@Overridepublic void onCreate(Bundle svInstSt) {
super.onCreate(svInstSt);setContentView(R.layout.main);
}}
44
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 1 (A)Sans envoi de données
¢ L'activité principale : MyActivity
45
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 1 (A)Sans envoi de données
¢ L'activité principale : MyActivity
public class MyActivity extends Activity {@Overridepublic void onCreate(Bundle svInstSt) {
super.onCreate(svInstSt);setContentView(R.layout.main);
}
public void lancer(View v) {Intent intent = new Intent(this,MySubActivity.class);startActivity(intent);
}}
46
¢ L'activité secondaire : MySubActivity
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 1 (A)Sans envoi de données
47
¢ L'activité secondaire : MySubActivity
public class MySubActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.main2);
}
public void lancer(View v) {finish();
}
}
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 1 (A)Sans envoi de données
48
CAS 1 (B)
49
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 1 (B)
¢ Envoyer des données par une Intent ou un Bundle� Un Bundle va contenir les données qui seront utilisées
par la nouvelle activité. Il ressemble à une Map.� Il faut attacher un Bundle à une Intent.
50
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 1 (B)Avec envoi de données
¢ L'activité principale : MyActivity
public class MyActivity extends Activity {...public void lancer(View v) {
Intent intent = new Intent(this, MySubActivity.class);
intent.addAction("action1");
startActivity(intent);}
}
51
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 1 (B)Avec envoi de données
¢ L'activité principale : MyActivity
public class MyActivity extends Activity {...public void lancer(View v) {
Intent intent = new Intent(this, MySubActivity.class);
intent.addAction("action1");
intent.putExtra("a", 10);
startActivity(intent);}
}
52
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 1 (B)Avec envoi de données
¢ L'activité secondaire : MySubActivity
public class MySubActivity extends Activity {...public void tester(View v) {
Intent intent = getIntent();
String s = intent.getAction();
int x = intent.getIntExtra("a", -1);
if(s.equals("action1") {...}}
}
53
L’Intentde l’activité MyActivity
s = "action1"
x = 10
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 1 (B)Avec envoi de données
¢ L'activité secondaire : MySubActivity
public class MySubActivity extends Activity {...public void tester(View v) {
Intent intent = getIntent();String s = intent.getAction();int x = intent.getIntExtra("a", -1);int y = 0 ;if(s.equals("action1") {
y = x * 2 ;} else {
y = x + 2 ;}
}}
54
CAS 2
55
Activité 1
LA MÉTHODE ONACTIVITYRESULT
¢ La méthode onActivityResult :
56
Activité 2
startActivityForResult(intent, rc)
finish()onActivityResult(a, b, c) {...
}
LA MÉTHODE ONACTIVITYRESULT
¢ La méthode onActivityResult :
57
public class MyActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.main2);
}
@Overrideprotected void onActivityResult(int a, int b, Intent c) {
// a : request code// b : result code// c : intent
}
}
LA MÉTHODE ONACTIVITYRESULT
¢ La méthode onActivityResult utilise trois
paramètres pour identifier l'activité et ses valeurs
de retour :
� int requestCode : valeur identifiant quelle activité a
appelé la méthode. Cette valeur a été spécifiée comme
paramètre de la méthode startActivityForResult,� int resultCode : représente la valeur de retour envoyée
par la sous-activité pour signaler son état à la fin de la
transaction,
� Intent intent : cet objet permet d'échanger des
données.
58
LA MÉTHODE ONACTIVITYRESULT¢ La méthode onActivityResult :
59
startActivity(intent) finish()
startActivityForResult(intent, a) finish()
onActivityResult(a, b, c)
startActivityForResult(intent, a) setResult(x)finish()
onActivityResult(a, x, c)
startActivityForResult(intent, a) setResult(x, c)finish()
onActivityResult(a, x, c)
Activité 1 Activité 2
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 2
¢ requestCode : quelle fenêtre a été choisie ?
Fenêtre principale
Fenêtre 1
Fenêtre 2
public void onClick1(View v) {Intent intent = new Intent(this, MySubActivity1.class);startActivityForResult(intent, 1)
}
public void onClick2(View v) {Intent intent = new Intent(this, MySubActivity2.class);startActivityForResult(intent, 2)
}
¢ requestCode : quelle fenêtre a été choisie ?
61
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 2
startActivityForResult(intent, 1)
Fenêtre principale
Fenêtre 1
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 2
¢ requestCode : quelle fenêtre a été choisie ?
62
Fenêtre principale
Fenêtre 1
startActivityForResult(intent, 1)
finish()
onActivityResult(requestCode, resultCode, intent)= 1
63
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 2
¢ requestCode : quelle fenêtre a été choisie ?
startActivityForResult(intent, 2)
Fenêtre 2
Fenêtre principale
¢ requestCode : quelle fenêtre a été choisie ?
Fenêtre 2
64
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 2
Fenêtre principale
startActivityForResult(intent, 2)
finish()
onActivityResult(requestCode, resultCode, intent)= 2
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 2
¢ requestCode : quelle fenêtre a été choisie ?¢ L'activité principale : MyActivity
public class MyActivity extends Activity {
private static final int CODE1 = 1;private static final int CODE2 = 2;
@Overridepublic void onCreate(Bundle svInstSt) {
super.onCreate(svInstSt);setContentView(R.layout.main);
}}
65
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 2
¢ requestCode : quelle fenêtre a été choisie ?¢ L'activité principale : MyActivity
.../...protected void onActivityResult(int requestCode, int resultCode , Intent intent) {
// Afficher requestCode}public void onClick1(View v) {
Intent intent = new Intent(this, MySubActivity1.class);startActivityForResult(intent, CODE1);
}public void onClick2(View v) {
Intent intent = new Intent(this, MySubActivity2.class);startActivityForResult(intent, CODE2);
}} 66
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 2
¢ requestCode : quelle fenêtre a été choisie ?¢ Les activités secondaires :
public class MySubActivity1 extends Activity {public void onCreate(Bundle savedInstanceState) {...}public void onClick(View v) {
finish() ;}
}
public class MySubActivity2 extends Activity {public void onCreate(Bundle savedInstanceState) {...}public void onClick(View v) {
finish() ;}
}67
CAS 3
68
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 3
¢ Considérons deux activités :� Une activité principale : MyActivity� Une activité secondaire (sous-activité) : MySubActivity
69
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 3
¢ L'activité principale : MyActivity
public class MyActivity extends Activity {private static final int CODE_MON_ACTIVITE = 1;
@Overridepublic void onCreate(Bundle svInstSt) {
super.onCreate(svInstSt);setContentView(R.layout.main);
}}
70
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 3
¢ L'activité principale : MyActivity
71
public void lancer(View v) {Intent intent = new Intent(this,MySubActivity.class);startActivityForResult(intent, CODE_MON_ACTIVITE);
}
¢ L'activité secondaire : MySubActivity
public class MySubActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.main2);
}}
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 3
72
¢ L'activité secondaire : MySubActivity
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 3
73
public void onClick1(View v) {setResult(1);finish();
}
public void onClick2(View v) {setResult(2);finish();
}
public void onClick3(View v) {setResult(3);finish();
}
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 3
¢ L'activité principale : MyActivity@Override
protected void onActivityResult(int requestCode, int resultCode , Intent intent) {String reponse = "Le numéro choisi est : " ;
if(resultCode == 1) {reponse += "1" ;
}if(resultCode == 2) {
reponse += "2" ; }
if(resultCode == 3) {reponse += "3" ;
}
Toast.makeText(this , reponse , Toast.LENGTH_SHORT).show();TextView tf = (TextView)findViewById(R.id.textView1);tf.setText(reponse);
}
74
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 3
¢ Remarque 1 : � resultCode peut prendre les valeurs suivantes :
¢ RESULT_OK¢ RESULT_CANCELED¢ RESULT_FIRST_USER¢ Etc.
75
DÉMARRER UNE SOUS-ACTIVITÉ : Cas 3
¢ Remarque 2 : � Rien n’empêche d’utiliser resultCode pour mettre à jour
une variable entière à partir d’une autre activité.
76
CAS 4
77
Envoyer les données de l’activité principale à l’activité secondaire (Cas 4)
¢ L'activité principale : Intent intent = new Intent(this, Activite2.class);intent.putExtra("a", 45);intent.putExtra("b", "message");startActivityForResult(intent);
¢ L’activité secondaire :
Intent intent = getIntent();int x = intent.getIntExtra("a", -1);String s = intent.getStringExtra("b");
78
Envoyer les données de l’activité secondaire à l’activité principale (Cas 4)
¢ L’activité principale :� Il faut utiliser la méthode startActivityForResult pour
lancer l’activité secondaire
¢ L'activité secondaire : setResult(resultCode, intent);
79
@Override protected void onActivityResult(int requestCode, int resultCode , Intent intent) {
...
}
Activité principale
Attention : L’Intent dans l’activité secondaire doit être créée.
Exemple :Intent intent = new Intent();//on peut ajouter une action s’il le fautintent.putExtra(...)Intent.putExtras(...) ...
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 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.
80
DÉLÉGUER AU SYSTÈME LE CHOIX DE L'APPLICATION
¢ Il est possible d'envoyer une intention et demander au système de choisir le composant le plus approprié pour exécuter l'action transmise.
¢ Exemple : composer un numéro de téléphone� Un Intent doit être créé� Utilisation de valeurs complémentaires pour le
constructeur� Action : ACTION_DIAL� Donnée : une URI comportant le numéro à appeler� Il n'est pas nécessaire de préciser le nom de la
classe à lancer : Le système décide de l'application à ouvrir
81
DÉLÉGUER AU SYSTÈME LE CHOIX DE L'APPLICATION
¢ Exemple : composer un numéro de téléphone
Uri uri = Uri.parse("tel:0612345678"); Intent intent = new Intent(Intent.ACTION_CALL, uri); startActivity(intent)
82
URI (Uniform Ressource Identifier) Exemple : tel, www, etc.
DÉLÉGUER AU SYSTÈME LE CHOIX DE L'APPLICATION
¢ Appel téléphonique (version 6 et +) : la demande de permission doit être faite aussi par programmation :
int permissionCheck =
ContextCompat.checkSelfPermission(activity,
Manifest.permission.CALL_PHONE);
if (permissionCheck == PackageManager.PERMISSION_GRANTED) {
Uri uri = Uri.parse("tel:0612345678");
Intent intent = new Intent(Intent.ACTION_CALL, uri);
startActivity(intent)
}
83
ACCORDER LES PERMISSIONS LIÉES AUX ACTIONS
¢ Si la permission d'effectuer un appel direct n'est pas déterminé dans le fichier de configuration (AndroidManifest.xml) l'application du téléphone ne sera pas lancée
¢ Il faut ajouter dans le fichier de configuration la ligne suivante :
<uses-permission android:name="android.permission.CALL_PHONE"
/>
84
EXEMPLE 1 :
¢ Démarrer un navigateur internet :
Uri uri = Uri.parse("http://www.iorgame.com/");Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);
85
EXEMPLE 2 :
¢ Recherche sur le web :
String recherche = "master 2 lse";
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, recherche);
startActivity(intent);
86
Action
EXEMPLES 3 : RENDRE LE BLUETOOTH VISIBLE DURANT 2MN
Intent intent = new Intent("android.bluetooth.adapter.action.REQUEST_DISCOVERABLE");
intent.putExtra("android.bluetooth.adapter.extra.DISCOVERABLE_DURATION", 120);
startActivity(intent);
87
Action
Clé d’une donnée de l’intent Valeur de la donnée(120 secondes : 2mn)
LES ACTIONS NATIVES
¢ ACTION_ANSWER� Prendre en charge un appel entrant.
¢ ACTION_CALL� Appeler un numéro de téléphone.
¢ ACTION_DELETE� Démarrer une activité permettant de supprimer une
donnée identifiée par l'URI spécifiée en paramètre.¢ ACTION_DIAL
� Afficher l'interface de composition des numéros.¢ ACTION_EDIT
� Éditer une donnée
88
LES ACTIONS NATIVES
¢ ACTION_SEARCH� Démarrer une activité de recherche.
¢ ACTION_SEND� Envoyer des données texte ou binaire par courriel ou SMS.
¢ ACTION_SENDTO� Lancer une activité capable d'envoyer un message au contact
défini par l'URI spécifiée en paramètre.¢ ACTION_VIEW
� Démarrer une action permettant de visualiser l'élément identifié par l'URI spécifiée en paramètre.
¢ ACTION_WEB_SEARCH� Effectuer une recherche sur Internet avec l'URI spécifiée en
paramètre comme requête. 89
90