我正在尝试在Windows 10 Universal apps 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;
}
答案 0 :(得分:7)
好吧,我想我自己找到了答案。看起来如果您添加&#34;联系人&#34;手动对Package.appxmanifest文件的功能,它将解决问题。
此功能没有UI选项。您必须以某种方式知道它存在,在文本编辑器中而不是在UI中编辑文件,并添加:
<uap:Capability Name="contacts" />
答案 1 :(得分:0)
自2018年起,至少在VS2017中,在可视化编辑 Package.appxmanifest 时,功能选项卡上列出了 此类功能。无论如何,
<uap:Capability Name="contacts" />
是清单所需的关键所在。