2016-07-08 8 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

エラーメッセージに何が問題なのですか。 msgstr "シーケンスには一致する要素がありません。"あなたは誕生日である最初の 'ContactDate'を尋ねますが、もしも誕生日がなければどうなりますか? –

+0

いいえ、私は誕生日と1つの連絡先を作成しました。私は誕生日を得ていませんでしたが。しかし、幸いにも私は方法を見つけた。ちょうど@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、私はあなたの仕事を試して、私は希望の結果を得ました。ありがとうございました 。あなたは私の一日を作った。 –

関連する問題