Windows phone 8.1 Windows phone 8.1使用联系人选择器检索电子邮件和电话号码
我使用以下代码允许用户选择联系人:Windows phone 8.1 Windows phone 8.1使用联系人选择器检索电子邮件和电话号码,windows-phone-8.1,contactpicker,Windows Phone 8.1,Contactpicker,我使用以下代码允许用户选择联系人: ContactPicker ContactPicker = new ContactPicker(); ContactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.PhoneNumber); var Contacts = await ContactPicker.PickContactsAsync(); if (Contacts.C
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;
但是,我只获得电话号码,对象“联系人”不包含任何电子邮件地址,即使它们存在于联系人信息中。
一种选择是切换:
ContactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.PhoneNumber);
与
但是我没有电话号码。。。我希望能够在一次选择中检索所有信息
有没有办法通过一个选择同时选择两个信息?
(我还尝试向DesiredFieldsWithContactFieldType添加多个条目,但随后出现异常…)
致以最良好的祝愿
克伦
2015年8月7日编辑:
由于“ContactPicker.DesiredFieldsWithContactFieldType”只能接受一种类型的“ContactFieldType”,因此我的解决方法是首先允许用户通过ContactFieldType.PhoneNumber获取联系人,然后通过编程检索所选联系人的电子邮件地址
从用户的角度来看,这不会是一个问题,因为所有内容都将在ContactPicker中正确显示。PickContactsAsync,我们只需要在代码隐藏中手动检索缺少的电子邮件信息,这很容易,因为我们知道用户选择了哪些联系人。尝试以下操作:
ContactStore contactStore = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AllContactsReadOnly);
ContactPicker contactPicker = new ContactPicker();
IList<Contact> pickedContacts = await contactPicker.PickContactsAsync();
int pickedCount = pickedContacts != null ? pickedContacts.Count : 0;
if (pickedCount > 0)
{
for (int i = 0; i < count; ++i)
{
Contact c = pickedContacts[i];
Contact realContact = await contactStore.GetContactByIdAsync(c.Id);
//...
}
}
ContactStore ContactStore=wait ContactManager.RequestStoreAsync(ContactStoreAccessType.AllContactsReadOnly);
ContactPicker ContactPicker=新的ContactPicker();
IList pickedContacts=等待contactPicker.PickContactsAsync();
int pickedCount=pickedContacts!=无效的pickedContacts。计数:0;
如果(pickedCount>0)
{
对于(int i=0;i
因此,首先需要获取联系人的“骨架”,然后可以从ContactStore对象中获取整个联系人实体及其所有属性
它在Windows10Mobile上对我有效。与Windows8应该没有太大区别
希望有帮助。我也有同样的问题。你找到解决办法了吗?
ContactStore contactStore = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AllContactsReadOnly);
ContactPicker contactPicker = new ContactPicker();
IList<Contact> pickedContacts = await contactPicker.PickContactsAsync();
int pickedCount = pickedContacts != null ? pickedContacts.Count : 0;
if (pickedCount > 0)
{
for (int i = 0; i < count; ++i)
{
Contact c = pickedContacts[i];
Contact realContact = await contactStore.GetContactByIdAsync(c.Id);
//...
}
}