次のコードを使用して、ユーザーが連絡先を選択できるようにしています。
ContactPicker ContactPicker = new ContactPicker();
ContactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.PhoneNumber);
var Contacts = await ContactPicker.PickContactsAsync();
if (Contacts.Count > 0)
{
foreach (Contact contact in Contacts)
{
string telephone = string.Empty;
string email = string.Empty;
if (contact.Phones.Count > 0)
{
telephone = contact.Phones[0].Number;
}
if (contact.Emails.Count > 0)
{
email = contact.Emails[0].Address;
}
PartyPerson person = new PartyPerson(DateTime.Now.ToString("PP_yyMMdd_hhmmss_ffff"), true, contact.DisplayName, 0, 0, 0, email, telephone);
AddPartyPerson(person);
}
}
ContactPicker = null;
ただし、電話番号しか取得できません。連絡先情報に存在するにもかかわらず、オブジェクト「連絡先」にはメールアドレスが含まれていません。1 つのオプションは、切り替えることです。
ContactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.PhoneNumber);
と
ContactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.Email);
しかし、電話番号を取得できません... 1回の選択ですべての情報を取得できるようにしたいです。
1回の選択で両方の情報を選択する方法はありますか? (DesiredFieldsWithContactFieldType に複数のエントリを追加しようとしましたが、例外が発生します...)
よろしくお願いします、
ケラン
EDIT 07.08.2015: 「ContactPicker.DesiredFieldsWithContactFieldType」は「ContactFieldType」の 1 つのタイプのみを受け入れることができるため、これを回避する方法は、最初にユーザーが ContactFieldType.PhoneNumber で連絡先を取得できるようにし、次にプログラムでメールアドレスを取得することでした選択した連絡先。
ユーザーの観点からは、ContactPicker.PickContactsAsync ですべてが正しく表示されるため、これは問題にはなりません。不足している電子メール情報をコード ビハインドで手動で取得する必要があるだけです。これは、連絡先が何であるかを知っているため簡単です。ユーザーによって選択されます。