系统相关
首页 > 系统相关> > 在Windows 10 UWP中如何访问联系人?

在Windows 10 UWP中如何访问联系人?

作者:互联网

我想访问联系人数据,所以做了一些研究,从MSDN中找到了以下文章

Accessing Contacts

从本文中,我阅读了“选择多个联系人”部分,并使用了该部分,但每次“电子邮件和电话”值均为空.

我访问联系人的代码如下:

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);
    }
}

ps. System._ComObject是内部本机对象.您必须打开本机调试才能使用它.

标签:windows-10-universal,win-universal-app,c
来源: https://codeday.me/bug/20191118/2029880.html