0

我正在尝试允许用户以这种方式从 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 |

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~

我昨天添加了几个联系人,所以它确实包含联系人。我的代码有问题吗,或者我该如何解决这个问题?

4

1 回答 1

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");
}

当联系人也没有任何电子邮件地址时,不要忘记处理这种情况。

于 2012-11-20T05:52:58.203 回答