Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 24
Lancement d’activités et de sous-activités 251
Si l’activité que vous comptez lancer vous appartient, il peut être plus simple de créer une
intention explicite, nommant le composant à lancer. À partir de votre activité, vous pourriez
par exemple créer une intention de la façon suivante :
new Intent(this, HelpActivity.class);
Cette instruction indique que vous voulez lancer HelpActivity.
Vous pourriez également créer une intention pour une Uri donnée, demandant une action
particulière :
Uri uri=Uri.parse("geo:" + lat.toString() + "," + lon.toString());
Intent i=new Intent(Intent.ACTION_VIEW, uri);
Ici, à partir de la latitude et de la longitude d’une position (respectivement lat et lon),
nous construisons une Uri de schéma geo et nous créons une intention demandant de
l’afficher (ACTION_VIEW).
Faire appel
Lorsque l’on dispose de l’intention, il faut la passer à Android et récupérer l’activité fille à
lancer. Quatre choix sont alors possibles :
● Le plus simple consiste à appeler startActivity() en lui passant l’intention –
Android recherchera l’activité qui correspond le mieux et lui passera l’intention pour
qu’elle la traite. Votre activité ne sera pas prévenue de la fin de l’activité fille.
● Vous pouvez appeler startActivityForResult() en lui passant l’intention et un
identifiant (unique pour l’activité appelante). Android recherchera l’activité qui correspond le mieux et lui passera l’intention. Votre activité sera prévenue par la méthode de
rappel onActivityResult() de la fin de l’activité fille (voir plus loin).
● Vous pouvez appeler sendBroadcast(). Dans ce cas, Android passera l’intention à
tous les BroadcastReceiver enregistrés qui pourraient vouloir cette intention, pas
uniquement à celui qui correspond le mieux.
● Vous pouvez appeler sendOrderedBroadcast(). Android passera alors l’intention à
tous les BroadcastReceiver candidats, chacun leur tour – si l’un deux "consomme"
l’intention, les autres candidats ne sont pas prévenus.
La plupart du temps, vous utiliserez startActivity() ou startActivityForResult() –
les intentions diffusées sont plutôt lancées par le système Android lui-même.
Comme on l’a indiqué, vous pouvez implémenter la méthode de rappel onActivityResult() lorsque vous utilisez startActivityForResult(), afin d’être prévenu de la fin
de l’activité fille. Cette méthode reçoit l’identifiant unique fourni à startActivityForResult() pour que vous puissiez savoir quelle est l’activité qui s’est terminée. Vous récupérez également :
Livre Android.book Page 251 Dimanche, 8. novembre 2009 12:23 12
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 24
Lancement d’activités et de sous-activités 251
Si l’activité que vous comptez lancer vous appartient, il peut être plus simple de créer une
intention explicite, nommant le composant à lancer. À partir de votre activité, vous pourriez
par exemple créer une intention de la façon suivante :
new Intent(this, HelpActivity.class);
Cette instruction indique que vous voulez lancer HelpActivity.
Vous pourriez également créer une intention pour une Uri donnée, demandant une action
particulière :
Uri uri=Uri.parse("geo:" + lat.toString() + "," + lon.toString());
Intent i=new Intent(Intent.ACTION_VIEW, uri);
Ici, à partir de la latitude et de la longitude d’une position (respectivement lat et lon),
nous construisons une Uri de schéma geo et nous créons une intention demandant de
l’afficher (ACTION_VIEW).
Faire appel
Lorsque l’on dispose de l’intention, il faut la passer à Android et récupérer l’activité fille à
lancer. Quatre choix sont alors possibles :
● Le plus simple consiste à appeler startActivity() en lui passant l’intention –
Android recherchera l’activité qui correspond le mieux et lui passera l’intention pour
qu’elle la traite. Votre activité ne sera pas prévenue de la fin de l’activité fille.
● Vous pouvez appeler startActivityForResult() en lui passant l’intention et un
identifiant (unique pour l’activité appelante). Android recherchera l’activité qui correspond le mieux et lui passera l’intention. Votre activité sera prévenue par la méthode de
rappel onActivityResult() de la fin de l’activité fille (voir plus loin).
● Vous pouvez appeler sendBroadcast(). Dans ce cas, Android passera l’intention à
tous les BroadcastReceiver enregistrés qui pourraient vouloir cette intention, pas
uniquement à celui qui correspond le mieux.
● Vous pouvez appeler sendOrderedBroadcast(). Android passera alors l’intention à
tous les BroadcastReceiver candidats, chacun leur tour – si l’un deux "consomme"
l’intention, les autres candidats ne sont pas prévenus.
La plupart du temps, vous utiliserez startActivity() ou startActivityForResult() –
les intentions diffusées sont plutôt lancées par le système Android lui-même.
Comme on l’a indiqué, vous pouvez implémenter la méthode de rappel onActivityResult() lorsque vous utilisez startActivityForResult(), afin d’être prévenu de la fin
de l’activité fille. Cette méthode reçoit l’identifiant unique fourni à startActivityForResult() pour que vous puissiez savoir quelle est l’activité qui s’est terminée. Vous récupérez également :
Livre Android.book Page 251 Dimanche, 8. novembre 2009 12:23 12
