Developpement Windows Phone - partie 24

Launchers et Choosers

Cet article fait partie d’une série d’articles sur le développement Windows Phone. Il s’agit d’une traduction des articles se trouvant sur la MSDN.

Sommaire

Bien débuter et fondamentaux

Visuels et média

Travailler avec les données

Sondes et autres fonctionnalités spécifiques au téléphone


Launchers et Choosers

Silverlight pour les applications Windows Phone ne dispose pas d’un accès direct aux applications intégrées au téléphone, tel que le numéroteur téléphonique, ou les bibliothèques de données utilisateur, ainsi que la bibliothèque de photos. C'est parce que toutes les applications Windows Phone sont isolées les unes des autres dans des sandbox.

Une application ne peut pas démarrer directement une autre application, accéder à la mémoire d'une autre application, ou accéder au stockage de données d'une autre application. Les Launchers et les Choosers permettent indirectement à Silverlight d’utiliser les applications intégrées à l'appareil et d'accéder à des bibliothèques de données communes. Ce tutoriel décrit ce que les Launchers et les Choosers font et comment les utiliser dans vos applications.

Ce tutoriel contient les sections suivantes:

Introduction aux Launchers et Choosers

Les Launchers (lanceurs) et les Choosers (sélecteurs) permettent aux applications Silverlight d’accéder aux applications intégrées ainsi qu’aux stockages de données sur le périphérique Windows Phone. Par exemple, si vous voulez que votre application effectue un appel téléphonique, vous devrez utiliser le Launcher PhoneCallTask pour démarrer l'application du numéroteur téléphonique. Pour accéder à des bibliothèques de données sur l'appareil, telles que la bibliothèque de photos, vous devrez utiliser le Chooser PhotoChooserTask.

La différence entre les Launchers et les Choosers est que les Launchers ne retournent pas de valeur lorsque l'application se termine, et les Choosers retournent une valeur. Par exemple, le Launcher EmailComposeTask démarre l'application messagerie et quand il en sort, le contrôle est simplement retourné à l'application qui l’a appelé. Le Chooser CameraCaptureTask, démarre l'application caméra, mais après que l’utilisateur ai pris une photo, il fermera l’application caméra et retournera la photo qui a été prise.

Lorsque vous appelez un Launcher ou Chooser, votre application Silverlight est désactivée et l'application exécutée est démarrée. Quand l'application qui a été exécutée est quittée, votre application est réactivée. Ce processus est appelé le tombstoning et peut avoir de subtils effets sur l'état de votre application. Pour plus d'informations sur la façon de traiter correctement le tombstoning dans votre application Silverlight, allez voir la section le modèle d'exécution pour Windows Phone sur MSDN ainsi que le tutoriel sur le Tombstoning.

Les classes Launchers et Choosers sont présentes dans l’espace de nom Microsoft.Phone.Tasks, ainsi vous aurez besoin d'inclure une directive « using » dans votre application.

Utilisation des Launchers

Le processus d'utilisation de toutes les classes Launcher est le même. Pour utiliser une classe Launcher, suivez les étapes suivantes:

  1. Créez une instance de la classe Launcher
  2. Définissez les propriétés de l’objet Launcher
  3. Appelez la méthode Show

Par exemple, pour utiliser le Launcher Email afin de composer un nouveau email, vous pouvez créer une instance de la classe EmailComposeTask, et définir les propriétés To,Body et Subject et appeler la méthode Show pour démarrer l’application. Quand vous sortez de l’application Email, le contrôle est retourné à votre application.

Le tableau suivant liste les différents Launchers disponibles :

launcher

Description

EmailComposeTask

Autorise une application à lancer l'application e-mail avec un nouveau message affiché. Utilisez cette option pour permettre aux utilisateurs d'envoyer des emails à partir de votre application.

MarketplaceDetailTask

Autorise une application à lancer l’application MarketPlace Windows Phone et d’afficher la page de détails pour un produit spécifié.

MarketplaceHubTask

Autorise une application à lancer l’application MarketPlace.

MarketplaceSearchTask

Autorise une application à lancer l’application Marketplace Windows Phone et d’afficher les résultats de recherche en fonction des termes spécifiés.

MediaPlayerLauncher

Autorise une application à lancer le lecteur média.

PhoneCallTask

Autorise une application à lancer l'application Phone. Utilisez cette option pour permettre aux utilisateurs d’effectuer un appel téléphonique à partir de votre application.

SearchTask

Autorise une application à lancer l’application de recherche sur internet.

SmsComposeTask

Autorise une application à lancer l'application de messagerie. L'application de messagerie commence un nouveau message SMS.

WebBrowserTask

Autorise une application à lancer le navigateur internet

L'exemple suivant montre comment utiliser le Launcher PhoneCallTask ​​pour faire apparaitre le numéroteur téléphonique de l'appareil. Une interface utilisateur de base est créée, et possède un Button pour appeler le Launcher.

XAML

Code Snippet

  1.  
  2. <Button Name="ButtonDialer"
  3. Content="Place Call"
  4. Height="100" Width="200"
  5. Click="ButtonDialer_Click" />

L'image suivante montre un exemple d'application fonctionnant dans l'émulateur Windows Phone.

image

Par la suite, un objet PhoneCallTask est instancié et les propriétés DisplayName et PhoneNumber sont définies. Enfin, la méthode Show est appelée pour démarrer le Launcher.

C#

Code Snippet

  1. private void ButtonDialer_Click(object sender, RoutedEventArgs e)
  2.         {
  3.             // The launcher.
  4.             PhoneCallTask phoneCallTask = new PhoneCallTask();
  5.             // Contact information to pass to the phone dialer application.
  6.             phoneCallTask.PhoneNumber = "(555)-555-5555";
  7.             phoneCallTask.DisplayName = "Fred";
  8.             // Launches the phone dialer application.
  9.             phoneCallTask.Show();
  10.         }

Visual Basic

Code Snippet

  1. Private Sub ButtonDialer_Click(sender As Object, e As RoutedEventArgs)
  2.         ' The launcher.
  3.         Dim phoneCallTask As New PhoneCallTask()
  4.         ' Contact information to pass to the phone dialer application.
  5.         phoneCallTask.PhoneNumber = "(555)-555-5555"
  6.         phoneCallTask.DisplayName = "Fred"
  7.         ' Launches the phone dialer application.
  8.         phoneCallTask.Show()
  9.     End Sub

Après que la méthode Show soit appelée, l'utilisateur est invité à passer l'appel ou non. L'image suivante montre un exemple d'application fonctionnant dans l'émulateur Windows Phone.

image

Si l'utilisateur accepte de passer l'appel, l'application téléphone est lancée et le numéro de téléphone est composé. Les images suivantes montrent un exemple d'application fonctionnant dans l'émulateur Windows Phone.

image

L'exemple suivant montre comment utiliser le Launcher SearchTask pour effectuer une recherche sur Internet à partir de votre application.

Une interface utilisateur de base est créée et possède un Button pour appeler le Launcher.

XAML

Code Snippet

  1. <Button Name="ButtonSearch"
  2. Height="100" Width="250"
  3. Content="Search"
  4. Click="ButtonSearch_Click" />

L'image suivante montre un exemple d'application fonctionnant dans l'émulateur Windows Phone.

image

Ensuite, un SearchTask est instancié et la propriété SearchQuery est définie sur "Silverlight Windows Phone". Enfin, la méthode Show est appelée pour démarrer l'application.

C#

Code Snippet

  1. private void ButtonSearch_Click(object sender, RoutedEventArgs e)
  2.         {
  3.             // The launcher.
  4.             searchTask searchTask = new SearchTask();
  5.             // Set the Search query
  6.             searchTask.SearchQuery = "Silverlight Windows Phone";
  7.             // Launches the phone Search application.
  8.             searchTask.Show();
  9.         }

Visual Basic

Code Snippet

  1. Private Sub ButtonSearch_Click(sender As Object, e As RoutedEventArgs)
  2.     ' The launcher.
  3.     Dim searchTask As searchTask = New SearchTask()
  4.     ' Set the Search query
  5.     searchTask.SearchQuery = "Silverlight Windows Phone"
  6.     ' Launches the phone Search application.
  7.     searchTask.Show()
  8. End Sub

Après que la méthode Show soit appelée, l'utilisateur est invité par une boîte de dialogue s’il souhaite autoriser la recherche à s’effectuer. L'image suivante montre la page de confidentialité concernant la recherche.

image

Si l'utilisateur accepte la déclaration de confidentialité, la recherche est exécutée et les résultats de recherche sont affichés. Les images suivantes montrent un exemple d'application fonctionnant dans l'émulateur Windows Phone.

image

Utilisation des Choosers

L’utilisation des Choosers est très similaire à celle des Launchers. La principale différence est le retour des valeurs des Choosers au travers de l'évènement Completed. Pour utiliser un Chooser, effectuez les étapes suivantes:

  1. Créez une instance de la classe Chooser
  2. Ajoutez un gestionnaire d’évènement sur l’évènement Completed
  3. Définissez les propriétés de l’objet Chooser.
  4. Appelez la méthode Show.
  5. Récupérez la valeur de retour de l’application Chooser dans le gestionnaire d’évènement Completed.

Par exemple, pour utiliser le Chooser de photos, vous devrez créer une instance de la classe PhotoChooserTask, ajouter un gestionnaire d'évènement à l’évènement Completed, appeler la méthode Show, puis dans le gestionnaire Completed, si le TaskResult est OK, récupérer les données de l’image à partir la propriété ChosenPhoto des arguments de l’évènement.

Le tableau suivant énumère les différents Choosers qui sont disponibles:

Launcher

Description

CameraCaptureTask

Autorise une application à lancer l’application Camera. Utilisez cette classe pour permettre aux utilisateurs de prendre une photo à partir de votre application.

EmailAddressChooserTask

Autorise une application à lancer l’application Contacts. Utilisez cette classe pour obtenir l’adresse email d’un contact sélectionné par un utilisateur.

PhoneNumberChooserTask

Autorise une application à lancer l’application Contacts. Utiliser cette classe pour obtenir le numéro de téléphone d’un contact sélectionné par l’utilisateur.

PhotoChooserTask

Autorise une application à lancer l’application Photo Chooser. Utilisez cette classe pour permettre aux utilisateurs de sélectionner une photo.

SaveEmailAddressTask

Autorise une application à lancer l’application Contacts. Utilisez cette classe pour permettre aux utilisateurs de sauvegarder une adresse email à partir de votre application pour un contact nouveau ou existant.

SavePhoneNumberTask

Autorise une application à lancer l’application Contacts. Utilisez cette classe pour autoriser les utilisateurs à sauvegarder un numéro de téléphone à partir de votre application pour un contact nouveau ou existant.

L'exemple suivant montre comment utiliser le Chooser PhoneNumberChooserTask pour choisir un numéro de téléphone de l'un de ses contacts. Une interface utilisateur de base est créée et possède un Button pour appeler le Chooser et d’un TextBlock pour afficher le résultat.

XAML

Code Snippet

  1. <!--ContentPanel - place additional content here-->
  2. <StackPanel>
  3.     <Button Name="ButtonChooser"
  4.             Height="150" Width="275"
  5.             Content="Get Phone Number"
  6.             Click="ButtonChooser_Click"/>
  7.     <TextBlock Name="txtPhoneNumber"
  8.                 Margin="10"
  9.                 FontSize="28"
  10.                 Text="Phone Number: " />
  11. </StackPanel>

L’image suivante montre un exemple d’application fonctionnant dans l’émulateur Windows Phone.

image

Une instance globale de la classe PhoneNumberChooserTask est définie. Dans le constructeur de la classe public, le PhoneNumberChooserTask est instancié. Un gestionnaire d'événement nommé numberChooser_Completed est créé pour gérer l'événement Completed. Enfin, la méthode Show est appelée pour démarrer l'application.

Dans le gestionnaire d'événement Completed, la propriété TaskResult sur ​ PhoneNumberResult est vérifiée. Si le TaskResult est OK, la propriété Text sur le TextBlock est définie à la valeur de la propriété PhoneNumber de l'objet PhoneNumberResult.

C#

Code Snippet

  1. public partial class MainPage : PhoneApplicationPage
  2.     {
  3.         PhoneNumberChooserTask numberChooser;
  4.         // Constructor
  5.         public MainPage()
  6.         {
  7.             InitializeComponent();
  8.             numberChooser = new PhoneNumberChooserTask();
  9.             numberChooser.Completed += new EventHandler<PhoneNumberResult>(numberChooser_Completed);
  10.         }
  11.         void numberChooser_Completed(object sender, PhoneNumberResult e)
  12.         {
  13.             // Check if TaskResult is a success
  14.             if (e.TaskResult == TaskResult.OK)
  15.             {
  16.                 // Display the phone number in the TextBlock txtPhoneNumber
  17.                 txtPhoneNumber.Text += e.PhoneNumber;
  18.             }
  19.         }
  20.         
  21.         private void ButtonChooser_Click(object sender, RoutedEventArgs e)
  22.         {
  23.             try
  24.             {
  25.                 // Start the Chooser.
  26.                 numberChooser.Show();
  27.             }
  28.             catch (System.InvalidOperationException ex)
  29.             {
  30.                 // Catch the exception, but no handling is necessary.
  31.             }
  32.         }
  33.     }

Visual Basic

Code Snippet

  1. Partial Public Class MainPage
  2.     Inherits PhoneApplicationPage
  3.     Private numberChooser As PhoneNumberChooserTask
  4.     ' Constructor
  5.     Public Sub New()
  6.         InitializeComponent()
  7.         numberChooser = New PhoneNumberChooserTask()
  8.         numberChooser.Completed += New EventHandler(Of PhoneNumberResult)(AddressOf numberChooser_Completed)
  9.     End Sub
  10.     Private Sub numberChooser_Completed(sender As Object, e As PhoneNumberResult)
  11.         ' Check if TaskResult is a success
  12.         If e.TaskResult = TaskResult.OK Then
  13.             ' Display the phone number in the TextBlock txtPhoneNumber
  14.             txtPhoneNumber.Text += e.PhoneNumber
  15.         End If
  16.     End Sub
  17.     Private Sub ButtonChooser_Click(sender As Object, e As RoutedEventArgs)
  18.         Try
  19.             ' Start the Chooser.
  20.             numberChooser.Show()
  21.             ' Catch the exception, but no handling is necessary.
  22.         Catch ex As System.InvalidOperationException
  23.         End Try
  24.     End Sub
  25. End Class

L’image suivante montre le Chooser PhoneNumber en exécution dans l’émulateur Windows Phone.

image

Après que l'utilisateur ait sélectionné le contact pour obtenir le numéro de téléphone, le numéro est affiché. Les images suivantes montrent l'application après qu’un contact soit sélectionné.

image

Voir aussi