Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么People应用程序不显示联系人/不允许我选择联系人?_C#_Windows 8_Windows Runtime_Windows Store Apps - Fatal编程技术网

C# 为什么People应用程序不显示联系人/不允许我选择联系人?

C# 为什么People应用程序不显示联系人/不允许我选择联系人?,c#,windows-8,windows-runtime,windows-store-apps,C#,Windows 8,Windows Runtime,Windows Store Apps,我正在尝试允许用户通过以下方式从People应用程序中选择联系人: private async Task<System.Collections.Generic.KeyValuePair<string, string>> SelectAContactForASlot() { KeyValuePair<string, string> kvp; // = new KeyValuePair<string, string>(); var co

我正在尝试允许用户通过以下方式从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");
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


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

我尝试了您的代码,它按预期打开了联系人选择器。为了进行测试,请尝试使用一个按钮创建一个新的应用程序,该按钮可以从单击事件处理程序调用您的方法,就像我所做的那样

此外,如果问题仍然存在,您可能希望重新登录/重新启动计算机。我知道我以前在共享功能方面也遇到过类似的问题——在代码中处理错误后,即使是正确的代码在重新启动之前也无法工作

当我这么做时:您可能想稍微更改一下您的代码-为了实际获取电子邮件地址,请将contact.Emails[0]替换为contact.Emails[0]。ToString为contact.Emails[0]。值:


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

您是否已将ID_CAP_CONTACTS功能添加到清单文件WMAppManifest.xml?清单文件名为Package.appxmanifest,对于所有Windows应用商店应用程序都是如此;Package.appxmanifest的声明部分有一个联系人选择器项,但我不确定这是否是调用本地人应用程序所必需的;它的描述是将应用程序注册为人员选取器,使应用程序中的联系人详细信息可用于其他Windows 8应用程序…抱歉,我将标签误读为Windows Phone 8。你试过启用它只是为了看看它是否有效吗?如果我添加联系人选择器声明,它还想知道可执行文件、入口点和起始页,我不知道应该放在那里什么;我真的不认为这适用于我的场景;我将代码改为使用Value而不是ToString,并添加了对空值电子邮件地址的检查。但是,我现在可以让联系人选择器显示,显然临时故障是通过重新启动或其他方式修复的,但是其中仍然没有联系人,所以这仍然是一个问题。我从att.net等网站添加了我可以添加的联系人,甚至手动添加了一些联系人,但它仍然显示没有可用联系人。@它只是在显示联系人和不显示联系人之间随机切换?但是,如果你打开人脉应用程序,你总能看到联系人吗?您是否有可能注册了多个联系人选取器,但由于某些原因,选择的联系人并不总是相同的?你可以点击屏幕左上角的标题“应该是采摘者的人物”在他们之间切换。人物应用程序始终显示,我可以从下拉列表中选择人物,这是唯一的选择;在这一点上,它通常会说它不可用-我只看过一次联系人列表-足以知道我的代码工作,还有其他问题。@ClayShannon您是否有机会尝试在这个应用程序或其他应用程序中实现联系人选择器?如果尚未正确实施,这可能会导致问题。如果您尝试运行应用程序并在重新启动后立即打开联系人选取器,是否有效?你有可能在不同的机器上试用吗。
            | Select |  | Cancel |
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");
}