如何访问 Windows 10 UWP 中的联系人?
How to access Contacts in Windows 10 UWP?
我想访问联系人数据,所以我做了一些研究并从 MSDN 中找到了以下文章
从这篇文章中,我阅读了选择多个联系人部分并使用了它,但每次,电子邮件和电话的值为空。
我访问联系人的代码如下:
var contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker();
contactPicker.CommitButtonText = "Select";
contacts = await contactPicker.PickContactsAsync();
PhoneContactsList.Items.Clear();
if (contacts != null && contacts.Count > 0)
{
PhoneContactsList.Visibility = Windows.UI.Xaml.Visibility.Visible;
foreach (Contact contact in contacts)
{
ContactData eachContact = new ContactData();
eachContact.DisplayName = contact.DisplayName;
if (contact.Emails.Count > 0)
{
eachContact.EmailAddress = contact.Emails[0].Address;
}
else if (contact.Phones.Count > 0)
{
eachContact.PhoneNumber = contact.Phones[0].Number;
}
contactsData.Add(eachContact);
}
PhoneContactsList.ItemsSource = contactsData;
}
请指出我做错了什么?
更新
当我调试代码并检查时我看不到任何值,唯一显示的是 System._ComObject。不知道什么意思
您需要按要求的字段过滤联系人:
var contactPicker = new ContactPicker();
contactPicker.CommitButtonText = "Select";
contactPicker.SelectionMode = ContactSelectionMode.Fields;
contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.PhoneNumber);
contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.Email);
var contacts = await contactPicker.PickContactsAsync();
if (contacts != null && contacts.Count > 0)
{
foreach (Contact contact in contacts)
{
Debug.WriteLine(contact.DisplayName + contact.Emails[0].Address);
}
}
p.s。 System._ComObject 是内部原生对象。您必须打开本机调试才能使用它。
我想访问联系人数据,所以我做了一些研究并从 MSDN 中找到了以下文章
从这篇文章中,我阅读了选择多个联系人部分并使用了它,但每次,电子邮件和电话的值为空。
我访问联系人的代码如下:
var contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker();
contactPicker.CommitButtonText = "Select";
contacts = await contactPicker.PickContactsAsync();
PhoneContactsList.Items.Clear();
if (contacts != null && contacts.Count > 0)
{
PhoneContactsList.Visibility = Windows.UI.Xaml.Visibility.Visible;
foreach (Contact contact in contacts)
{
ContactData eachContact = new ContactData();
eachContact.DisplayName = contact.DisplayName;
if (contact.Emails.Count > 0)
{
eachContact.EmailAddress = contact.Emails[0].Address;
}
else if (contact.Phones.Count > 0)
{
eachContact.PhoneNumber = contact.Phones[0].Number;
}
contactsData.Add(eachContact);
}
PhoneContactsList.ItemsSource = contactsData;
}
请指出我做错了什么?
更新
当我调试代码并检查时我看不到任何值,唯一显示的是 System._ComObject。不知道什么意思
您需要按要求的字段过滤联系人:
var contactPicker = new ContactPicker();
contactPicker.CommitButtonText = "Select";
contactPicker.SelectionMode = ContactSelectionMode.Fields;
contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.PhoneNumber);
contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.Email);
var contacts = await contactPicker.PickContactsAsync();
if (contacts != null && contacts.Count > 0)
{
foreach (Contact contact in contacts)
{
Debug.WriteLine(contact.DisplayName + contact.Emails[0].Address);
}
}
p.s。 System._ComObject 是内部原生对象。您必须打开本机调试才能使用它。