Do you want to build an application which will allow you to save an email address? Then this post will allow you to understand the API of Windows Phone 7 SDK. In this post, we will learn about SaveEmailAddressTask
class and its API with a simple demo.
Continue reading to learn about it. Also, I will share the code snippet of the internal implementation of the SaveEmailAddressTask
, which will help you to understand the actual implementation of the API of WP7 SDK.
Know About the API
Like other tasks, “SaveEmailAddressTask
” is also a sealed
class present in the Microsoft.Phone.Tasks
namespace and inherits ChooserBase
of type TaskEventArgs
. The class exposes Email
property of type string
where you can set the email address which you want to save.
Here is the Meta Data of the SaveEmailAddressTask Class
namespace Microsoft.Phone.Tasks
{
public sealed class SaveEmailAddressTask : ChooserBase<TaskEventArgs>
{
public string Email { get; set; }
public override void Show();
}
}
Do you want to know how actually the class “SaveEmailAddressTask
” has been implemented to do the specific operation? Here is the decompiled version of the class, which will help you to know the internals of it.
Internal Implementation of SaveEmailAddressTask Class
namespace Microsoft.Phone.Tasks
{
public sealed class SaveEmailAddressTask : ChooserBase<TaskEventArgs>
{
public string Email { get; set; }
public override void Show()
{
if (!ChooserHelper.NavigationInProgressGuard((Action) (() => this.Show())))
return;
ParameterPropertyBag ppb = new ParameterPropertyBag();
ppb.CreateProperty("EmailAddressToSave").StringValue = this.Email;
byte[] buffer = ChooserHelper.Serialize(ppb);
Uri appUri =
new Uri("app://5B04B775-356B-4AA0-AAF8-6491FFEA5615/SaveAnEmailToAddressBook",
UriKind.Absolute);
base.Show();
ChooserHelper.Invoke(appUri, buffer, (IChooser) this._genericChooser);
}
internal override void OnInvokeReturned(byte[] outputBuffer, Delegate fireThisHandlerOnly)
{
if (outputBuffer != null && outputBuffer.Length > 0)
this.FireCompleted((object) this, new TaskEventArgs(TaskResult.OK),
fireThisHandlerOnly);
else
this.FireCompleted((object) this, new TaskEventArgs(TaskResult.Cancel),
fireThisHandlerOnly);
}
}
}
In the above code snippet, you can see how the email address has been saved by the SDK in the Contacts
list by constructing a app Uri and then calling the Invoke()
method to launch the task.
Implementation Steps
Let’s begin by creating a simple demo application, where we will save an email address programmatically to the Windows Phone. Remember that I am hard coding the value to pass to the SaveEmailAddressTask
but you can design your application to get the value from the user by creating a UI to input the address.
First, create the instance of the SaveEmailAddressTask
and then set the Email
property with the email address. Register for the completed event (if you want to handle the result) before calling the Show()
method.
var saveEmailAddressTask = new SaveEmailAddressTask
{
Email = "no-reply@kunal-chowdhury.com"
};
saveEmailAddressTask.Completed += SaveEmailAddressTaskCompleted;
saveEmailAddressTask.Show();
In the completed event implementation, you will get the TaskResult
and based on the result, you can do any specific operation. See the below code snippet to know about the code:
void SaveEmailAddressTaskCompleted(object sender, TaskEventArgs e)
{
switch (e.TaskResult)
{
case TaskResult.OK:
break;
case TaskResult.Cancel:
break;
default:
break;
}
}
When you run the application, it will ask you to select the existing contact or create a new one to save the Email Address. Choose the specific operation to move to the next screen. In the 2nd screen, you can choose which type of email address you are going to save, i.e., “Personal
”, “Home
” or “Office
”, etc. Clicking on the Save button will redirect you to the contact page.

Depending on your chosen contact, it will display the screen. If you had chosen an existing contact, the email address will be automatically appended to that contact. If you had chosen to create a new contact, it will show the preview before saving the contact. In that case, you have to click Save button once again to save it.

I hope that the post was easy for you to understand the SDK API, its internal code implementation and the sample code implementation. Please leave your feedback below to leave your comment.
Stay tuned to my blog, Twitter, or Facebook to read more articles, tutorials, news, tips & tricks on various technology fields. Also Subscribe to our Newsletter with your Email ID to keep you updated on latest posts. We will send a newsletter to your registered email address. We will not share your email address with anybody as we respect privacy.
Reference: http://www.kunal-chowdhury.com. You may like to follow me on Twitter @kunal2383 or may like the Facebook page of my blog http://www.facebook.com/blog.kunal2383.