ContactManager.RequestStoreAsync() throws System.Unauthorize
本文关键字:System Unauthorize throws RequestStoreAsync ContactManager | 更新日期: 2023-09-27 18:05:32
我试图在Windows 10通用应用程序API中使用ContactManager类。我正在尝试在Windows 10台式机上执行此操作。
我收到一个异常,"System. "UnauthorizedAccessException"当尝试使用ContactManager.RequestStoreAsync()请求联系人列表时。
在以前的版本中,此功能仅适用于Windows Phone设备。微软的文档只是说它现在需要Windows 10设备系列,但我没有任何运气。
using Windows.ApplicationModel.Contacts;
public async Task<List<String>> getContacts()
{
List<String> listResults = new List<string>();
ContactStore store = null;
IReadOnlyList<ContactList> list = null;
ContactReader reader = null;
ContactBatch batch = null;
// *** This RequestStoreAsync() call is where the exception is thrown. All the cases below have the same issue. ***
//store = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AllContactsReadWrite);
//store = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AppContactsReadWrite);
store = await ContactManager.RequestStoreAsync();
list = await store.FindContactListsAsync();
foreach (ContactList contactList in list)
{
reader = contactList.GetContactReader();
batch = await reader.ReadBatchAsync();
foreach (Contact contact in batch.Contacts)
{
listResults.Add(contact.Name);
}
}
return listResults;
}
好吧,我想我自己找到了答案。如果您将"联系人"功能添加到包中。Appxmanifest文件,它会解决这个问题。
此功能没有UI选项。你必须知道它的存在,在文本编辑器中编辑文件,而不是在UI中,并添加:
<uap:Capability Name="contacts" />
截至2018年,在可视化编辑包时,在Capabilities选项卡上列出了这样的功能。appxmanifest,至少在VS2017中。总之,
<uap:Capability Name="contacts" />