Cloud Training (Online)




How to retreive all contacts from Windows Phone 7 using C# ?

With the earlier version of the Windows phone 7 SDK , it was only possible to retreive the phone number or email address and few more with the Choosers .

Now with the 7.1 Mango SDK , it is possible to retreive more information from the contact like Address , DisplayName,EmailAddresses  etc…

In this article , i show you how to How to retreive all contacts from Windows Phone 7 using C# .


The Contacts Class is defined in the namespace Microsoft.Phone.UserData and extends from PhoneDataSharingContext and  provides few methods and events for interacting with a user’s contact data.

public MainPage()
{
   InitializeComponent();
   Contacts objContacts = new Contacts();
   objContacts.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(objContacts_SearchCompleted);
   objContacts.SearchAsync(string.Empty, FilterKind.None, null);
}

void objContacts_SearchCompleted(object sender, ContactsSearchEventArgs e)
{

   foreach (var result in e.Results)
   {
     lst.Add("Name : " + result.DisplayName + " ; Phone Number : " + result.PhoneNumbers.FirstOrDefault());
   }

}

Contacts can also enable the user to search for the contact with the SearchAsync method . The FilterKind determines the field that will be used for filtering like PhoneNumber , DisplayName or EmailAddress etc..
When it is None , it can list all the contacts .

Here’s a little formatted display of the Contacts and their Phone Number . Note that i have used the emulator since i dont have the device with Mango currently…

public partial class MainPage : PhoneApplicationPage
{
   // Constructor
   public MainPage()
   {
     InitializeComponent();
     Contacts objContacts = new Contacts();
     objContacts.SearchCompleted += new EventHandler<ContactsSearchEventArgs>(objContacts_SearchCompleted);
     objContacts.SearchAsync(string.Empty, FilterKind.None, null);
}

void objContacts_SearchCompleted(object sender, ContactsSearchEventArgs e)
{

   var ContactsData = from m in e.Results
                      select new MyContacts
                      {
                          DisplayName = m.DisplayName,
                          PhoneNumber = m.PhoneNumbers.FirstOrDefault()

                       };
   var MyContactsLst = from contact in ContactsData
   group contact by contact.DisplayName into c
   orderby c.Key
   select new Group<MyContacts>(c.Key, c);
   longlist1.ItemsSource = ContactsData;

   }
}
public class MyContacts
{

   public string DisplayName { get; set; }
   public ContactPhoneNumber PhoneNumber { get; set; }

}