对于早期版本的 Windows Phone 7 SDK,只能使用选择器检索电话号码或电子邮件地址以及其他一些信息。现在,使用 7.1 Mango SDK,可以从联系人处检索更多信息,例如Address
, DisplayName
, EmailAddresses
etc.
我将向您展示如何使用 C# 从 Windows Phone 7 检索所有联系人。
The 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
等等。当它是None
,它可以列出所有联系人。
请注意,我使用了模拟器,因为我目前没有带有 Mango 的设备。
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; }
}