在早期的 windows phone 7 SDK 中只可以通过 Choosers 获取电话号码和 Email 地址以及其他一些简单的资料。从 7.1 Mango SDK 开始,微软就放开了这个限制,可获取包括:Address , DisplayName,EmailAddresses 等等。
Contacts 类在 Microsoft.Phone.UserData 命名空间中定义,扩展自 PhoneDataSharingContext 并提供一些方法用于跟联系人数据进行交互。
- 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 也可以用于联系人的搜索,通过 SearchAsync 方法。而 FilterKind 用于指定搜索的条件,例如 PhoneNumber , DisplayName or EmailAddress 等待。如果传递空值,则返回所有联系人信息。
这里是一些对联系人电话号码等信息进行格式化显示的方法。
- 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; }
- }