Windows Phone 7 Launchers & Choosers: The absolute guide

Many people ask me why Windows Phone 7 does not allow access to native functionality in order to accomplish common tasks, such as sending SMS and e-mails, via our own applications. Well, you may not have direct access, but the Windows Phone 7 API offers indirect access to almost every common phone feature in the form of Launchers and Choosers.

If you're in a hurry, just download a complete demo which illustrates the use of every Launcher and Chooser. Read on to understand how things work... ;-)

Let's begin with the definitions: Launchers start a native application and return no data to the calling application (such as opening a web browser). Choosers, on the other hand, start a native application and return some data back to the calling application (such as opening the contact list and selecting a particular phone number). We'll now see how Launchers and Choosers behave separately, as well as how they can be combined to work together!

Both Launchers and Choosers are found under Microsoft.Phone.Tasks namespace, so do not forget to include it in your application.

Using Launchers

Using a Launcher is pretty straightforward. Simply declare a phone-Task object, assign values to its properties and then call Show() method. Let's see specific examples:

  • PhoneCallTask (Starts a phone call)

  • SmsComposeTask (Creates a new SMS message)

  • EmailComposeTask (Creates a new e-mail message)

  • WebBrowserTask (Opens the web browser)

  • SearchTask (Launches search)

  • MediaPlayerLauncher (Launches Media Player)

Using Choosers

Using a Chooser is a little more complex. Choosers return a value, so, most of the times, we need to get this value through the Chooser's Completed event handler. Let's see how this can be done for each Chooser:

  • CameraCaptureTask (Takes a picture and returns it as a bitmap image)

  • PhotoChooserTask (Lets us select a photo)

  • PhoneNumberChooserTask (Retrieves a phone number)

  • EmailAddressChooserTask (Retrieves an e-mail address from our contact list)

  • SavePhoneNumberTask (Saves a specified phone number to a contact)

  • SaveEmailAddressTask (Saves a specified e-mail address to a contact)

Combining Launchers and Choosers!

What happens when you need more advanced functionality? For example, suppose you may want to select a phone number (PhoneNumberChooserTask) and then send an SMS (SmsComposeTask). Two or more tasks have to be used together in this case. Fortunately, the process is as easy as defining a phone task inside the Completed event handler of another task!

Demo

Finally, you can download a complete demo which uses all of the above Launchers and Choosers in a single Windows Phone application. Enjoy!

Resources

Note: There are a few more tasks which are absent from this blog post (MarketplaceDetailTask, MarketplaceHubTask, MarketplaceReviewTask and MarketplaceSearchTask specifically). These tasks are used exactly like the ones presented here, but I have excluded them from my demo because the Marketplace is not yet finalized.

  • Anonymous
    Anonymous

    Excellent article and demo code.  While I was aware of all this functionality already, it is certainly handy to have a single demo project which demonstrates it all.

  • Thank you, Nick. I really appreciate your comment.

  • Anonymous
    Anonymous

    ok.how can make encrypt and decrypt sms ? I don't have access to inbox/outbox .... Encryption it is easy with SmsComposeTask but decryption ????? How can get the incoming sms ?

  • Bill,

    The functionality you are asking for is not yet feasible. Microsoft will probably add it in future releases, but, as far as I know, nothing relevant has been announced.

    The only solution I can think of is replacing SMS with Push Notifications (web services and database storage), but it's quite hard to implement.

    Have a look at this article, too: http://bit.ly/fRgIwD

  • Anonymous
    Anonymous

    Thanks for some quality points there. I am kind of new to online , so I printed this off to put in my file, any better way to go about keeping track of it then printing?

  • Anonymous
    Anonymous

    I have infer from a only one of the articles on your website now, and I extremely like your style of blogging. I added it to my favorites trap stage muster and will be checking back soon. Cheer report register out of order my site as approvingly and let me be familiar with what you think. Thanks.

  • Anonymous
    Anonymous

    Hallo an euch alle , ich gerade gelesen  Ihr   Schreiben  hier  und  mochte  genießen Sie  Aufstehen  mit  große Schrift !

    Good Work ,  gut wohnen  und auch frohe Weihnachten und einen guten Rutsch ins neue Jahr  2011! Sorry  bad Deutsch!

  • Anonymous
    Anonymous

    awesome blog, do you have twitter or facebook? i will bookmark this page thanks. jasmin holzbauer

  • Anonymous
    Anonymous

    nice post. thanks.

  • Anonymous
    Anonymous

    very good ;)