2016-05-13 2 views
2

Я хочу получить доступ к контактам, и поэтому я сделал некоторые исследования и нашел следующую статью из MSDNКак получить доступ к контактам в Windows 10 UWP?

Accessing Contacts

Из этой статьи, я прочитал выбор нескольких контактов раздела, и я использовал это, но каждый раз, сообщения электронной почты и значение «Телефоны» равно null.

Мой код доступа контакт ниже:

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

Просьба предложить то, что я здесь делаю неправильно?

Update

Когда я отладки кода и проверить я не могу видеть, какие значения, только вещь показана System._ComObject. Я не знаю, что это значит.

+0

Предоставить доступ к контактам? – Archana

+0

yes Я проверил «Контакты» в возможностях. –

+0

Пробовал образец кода. Не знаю, почему это дает Null – Archana

ответ

2

Вам нужно фильтровать контакты по запрашиваемых полей:

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 - это внутренний собственный объект. Вы должны включить собственную отладку для работы с ней.

+0

Спасибо, что работает сейчас. –

Смежные вопросы