天天看點

Windows Phone如何擷取和添加聯系人

Windows Phone SDK 7.1 提供了擷取聯系人清單資訊的API,雖然是隻讀的,但是相比SDK 7.0已經很不錯了。聯系資訊擷取的相關API位于Microsoft.Phone.UserData空間下,對于聯系人擷取主要用到兩個類:Contacts, Contact。下面給出擷取聯系人資訊的執行個體以及注意事項。

  Windows Phone 擷取聯系人

  1.首先建立一個Contacts對象,查詢聯系人資訊的操作為異步處理,是以需要添加一個查詢完成事件(SearchCompleted)

  Contacts contacts = new Contacts();

  contacts.SearchCompleted += new EventHandler(SearchCompleted);

  2.接下來就是調用查詢,開始查找聯系人

  contacts.SearchAsync(String.Empty, FilterKind.DisplayName, null);

  SearchAsync (stringfilter, FilterKind filterKind, Object state) 在使用者的聯系人資料中異步搜尋聯系人資訊,filter為篩選器,FilterKind篩選器種類,上列中為查詢所有聯系人資訊。

  3.查詢完成後會調用查詢完成事件(SearchCompleted)

  private void SearchCompleted(object sender, ContactsSearchEventArgs e)

  {

  foreach (Contact result in e.Results)

  //聯系人姓名

  String name = Contact.DisplayName;

  //聯系人電話

  ContactPhoneNumber phoneNumber = Contact.PhoneNumbers.FirstOrDefault();

  String phone = String.Empty;

  if (phoneNumber != null)

  phone = phoneNumber.PhoneNumber;

  }

  //聯系人位址

  ContactAddress address = Contact.Addresses.FirstOrDefault();

  String addr = String.Empty;

  if (address != null)

  addr = address.PhysicalAddress.AddressLine1;

  //聯系人Email

  ContactEmailAddress emailAddress = Contact.EmailAddresses.FirstOrDefault();

  String email = String.Empty;

  if (emailAddress != null)

  email = emailAddress.EmailAddress;

  //…………

  注1:FirstOrDefault()為System.Linq.Enumerable類的函數,需要手動添加命名空間using System.Linq;

  注2:擷取聯系人位址PhysicalAddress.AddressLine1需要添加引用System.Device。

  前面介紹Windows Phone 擷取聯系人,通過Windows Phone SDK 7.1提供的API來擷取聯系人資訊。但是對于添加聯系人并沒有可以直接使用的API,我們隻能通過選擇器(Choosers)來實作添加聯系人資訊的操作。

  SaveContactTask 提供用于啟動聯系人應用程式以及使使用者能夠儲存聯系人的方法和事件。代碼編寫示例如下。

  1.建立選擇器并添加選擇器操作完成事件(Completed)

  SaveContactTask saveContact = new SaveContactTask();

  saveContact.Completed += new EventHandler(saveCompleted);

  2.為選擇器指派(聯系人資訊)并調用選擇器

  saveContact.FirstName = "宇之樂";

  saveContact.MobilePhone = "13888888888";

  saveContact.HomeAddressStreet = "江蘇省南京市";

  saveContact.Show();

  3.選擇器操作完成事件

  void saveCompleted(object sender, SaveContactResult e)

  switch (e.TaskResult)

  case TaskResult.OK:

  MessageBox.Show("儲存聯系人成功!");

  break;

  case TaskResult.Cancel:

  MessageBox.Show("使用者取消了操作!");

  case TaskResult.None:

  MessageBox.Show("聯系人未被儲存!");

  目前對聯系人的操作隻有查詢和添加,暫時還無法進行修改和删除聯系人的相關操作。隻能有使用者手動通過系統處理了。

本文轉自 wws5201985 51CTO部落格,原文連結:http://blog.51cto.com/wws5201985/804122,如需轉載請自行聯系原作者