在早期的 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; }
-
}