我正在尝试允许用户以这种方式从People应用中选择一个联系人:
private async Task<System.Collections.Generic.KeyValuePair<string, string>> SelectAContactForASlot()
{
KeyValuePair<string, string> kvp; // = new KeyValuePair<string, string>();
var contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker();
contactPicker.CommitButtonText = "Select";
var contact = await contactPicker.PickSingleContactAsync();
if (contact != null)
{
kvp = new KeyValuePair<string, string>(contact.Name, contact.Emails[0].ToString());
return kvp;
}
return kvp = new KeyValuePair<string, string>("No Name found", "No email found");
}
People应用程序确实被调用,但它看起来像这样:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ 人民v
出了点问题,这个应用程序现在无法选择联系人。
再次尝试选择该应用。
| Select | | Cancel |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
昨天我添加了几个联系人,所以它确实包含联系人。我的代码有问题,或者我怎么解决这个问题?
答案 0 :(得分:1)
我尝试了您的代码,并按预期打开了联系人选择器。只是为了测试,尝试使用单个按钮创建一个新应用程序,该按钮从我的Click
事件处理程序调用您的方法,就像我一样。
此外,如果问题仍然存在,您可能需要重新登录/重新启动计算机。我知道我过去在共享功能方面遇到了类似的问题 - 在我的代码中处理错误后,即使正确的代码在重新启动之后也不再有效。
虽然我很喜欢:您可能想稍微更改一下代码 - 实际获取电子邮件地址,将contact.Emails[0].ToString()
替换为contact.Emails[0].Value
:
private async Task<System.Collections.Generic.KeyValuePair<string, string>> SelectAContactForASlot()
{
KeyValuePair<string, string> kvp; // = new KeyValuePair<string, string>();
var contactPicker = new Windows.ApplicationModel.Contacts.ContactPicker();
contactPicker.CommitButtonText = "Select";
var contact = await contactPicker.PickSingleContactAsync();
if (contact != null)
{
kvp = new KeyValuePair<string, string>(contact.Name, contact.Emails[0].Value);
return kvp;
}
return kvp = new KeyValuePair<string, string>("No Name found", "No email found");
}
当联系人没有任何电子邮件地址时,不要忘记处理案件。