添加联系人Windows 10通用

是否有可能以编程方式将联系人添加到Windows 10中的地址簿/人员应用程序,就像在Android中可能的那样?

我有一个存储联系人信息的服务器,我想创build一个应用程序来同步我的联系人与Windows 10。

我尝试了几件事情,但实际上并没有成功。 这是我来了多远:

  1. 成功下载联系人数据。
  2. 将联系人数据放入Contact对象中。

这是我试过的:

  contacts.ContactManager.requestStoreAsync().done(function (contactStore) { contactStore.createContactListAsync("name").done(function (contactList) { for (i = 0; i < data.length; i++) { var contact = new contacts.Contact; //populate Contact item contactList.saveContactAsync(contact); } contactList.saveAsync; }); }); 

但是我得到一个拒绝访问错误。

任何帮助,将不胜感激。 提前致谢!

首先,确保您已经在应用程序清单中添加了联系人功能。

  <Capabilities> <Capability Name="internetClient" /> <uap:Capability Name="contacts"/> </Capabilities> 

如果您没有请求联系存储的读/写权限,您也将获得拒绝访问错误。

ContactStoreAccessType枚举

在这种情况下,您可以请求“appContactsReadWrite”权限。

但是,正如我测试,调用createContactListAsync方法时会有一些API问题。

目前的解决方法是添加Windows运行时组件包装:

 public sealed class ContactManagerWrapper { public IAsyncAction AddContactAsync(string userName, string email) { return AsyncInfo.Run(async (token) => { var store = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AppContactsReadWrite); var contactLists = await store.FindContactListsAsync(); var contactList = contactLists.FirstOrDefault(); var contact = new Contact(); contact.Name = userName; contact.Emails.Add(new ContactEmail() { Address = email, Kind = ContactEmailKind.Personal }); await contactList.SaveContactAsync(contact); }); } } 

WinJS项目:

  document.getElementById('click_me').addEventlistner("click", function () { var mgr = new UWPRuntimeComponent.ContactManagerWrapper(); mgr.addContactAsync('Jeffrey', 'jeffrey.chen@example.com').done(function () { console.log("add contact successfully"); }); }); 

尝试这个

 contacts.ContactManager.requestStoreAsync(ContactStoreAccessType.AppContactsReadWrite); 

而不是这个

 contacts.ContactManager.requestStoreAsync() 

你打开默认的商店,我认为它不能被开发人员访问。