2016-07-08 60 views
1

我想創建一個簡單的應用程序來獲取聯繫人的出生日期。下面我已經實現了一些代碼,但我不知道實際發生了什麼。如何從UWP中的聯繫人中獲取生日?

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) 
    { 
     try 
     { 
      foreach (Contact contact in contacts) 
      { 
       var birthday = contact.ImportantDates.First(d => d.Kind == 
         ContactDateKind.Birthday); 
       textBlock.Text = birthday.Day.ToString(); 

      } 
     } 
     catch (Exception w) 
     { 
      textBlock.Text = w.ToString(); 
     }     
    } 

在上面的代碼中,我順利拿到了電子郵件,姓名等,但因爲沒有可用像「contacts.birthday」的方法我不能讓生日謝謝。

不同的是我抓住的是:

'System.InvalidOperationException' in System.Linq.dll 
System.InvalidOperationException: Sequence contains no matching element at 
System.Linq.Enumerable.First[TSource](IEnumerable`1 source, Func`2 
predicate) at ContactApiSample.MainPage.<button_Click>d__1.MoveNext() 
+1

錯誤消息說出了什麼問題。 「序列不包含匹配的元素。」你問第一個'ContactDate'是一個生日,但如果沒有一個呢? –

+0

不,但我已經創建了一個聯繫人的出生日期,我正在嘗試與那一個。雖然我沒有得到生日。幸運的是,我找到了方法。看看@GraceFeng提供的下面的答案,BTW謝謝你的回覆。 –

+0

但你沒有要求重返的重要日期。你沒有說'contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.ImportantDate);' –

回答

0

看來,使用ContactPicker無法取得聯繫的所有信息。該IList<ContactDate> ImportantDates的計數始終爲0。

我只是找到了一個解決方法的情況下,如果你堅持使用ContactPicker在這裏,你可以得到聯繫人的ID,用這個ID來找到相同的接觸,但是從ContactStore例如像這樣:

if (contacts != null && contacts.Count > 0) 
{ 
    try 
    { 
     ContactStore allAccessStore = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AppContactsReadWrite); 

     foreach (Contact contact in contacts) 
     { 
      var storecontact = await allAccessStore.GetContactAsync(contact.Id); 
      var birthday = storecontact.ImportantDates.First(d => d.Kind == 
      ContactDateKind.Birthday); 
     } 
    } 
    catch (Exception w) 
    { 
     //textBlock.Text = w.ToString(); 
    } 
} 
+0

謝謝你的回覆@GraceFeng,我已經嘗試過你的工作,並且我得到了期望的結果。謝謝 。你讓我今天一整天都感覺很好。 –

相關問題