2016-05-13 27 views
2

Ich möchte Kontakte Daten zugreifen und so habe ich einige der Forschung und fand den folgenden Artikel von MSDNZugriff auf Kontakte in Windows 10 UWP?

Accessing Contacts

Von diesem Artikel habe ich mehrere Kontakte Index auswählen und ich verwendet, dass aber jedes Mal, die E-Mails und Phones-Wert ist null.

Mein Code Kontakt zuzugreifen, ist unten:

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

Bitte vorschlagen, was ich hier falsch mache?

aktualisieren

Wenn ich den Code debuggen und überprüfe ich alle Werte nicht sehen können, gezeigt einzige Sache ist System._ComObject. Ich weiß nicht was es bedeutet.

+0

Haben Sie Zugriff auf Kontakte gewährt? – Archana

+0

Ja, ich habe 'Kontakte' in Capabilities überprüft. –

+0

Versuchte das Codebeispiel. Nicht sicher, warum es null gibt – Archana

Antwort

2

Sie müssen von angeforderten Felder Kontakte filtern:

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 ist ein internes natives Objekt. Sie müssen das native Debugging aktivieren, um damit arbeiten zu können.

+0

Danke, es funktioniert jetzt wie erwartet. –

Verwandte Themen