添加联系人Windows 10 通用

Add contacts Windows 10 Universal

是否可以在 Windows10 中像在 Android 中一样以编程方式将联系人添加到地址簿/人脉应用程序?

我有一个存储联系人信息的服务器,我想制作一个应用程序将我的联系人与 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>

如果您没有请求对联系人存储的 read/write 权限,您也会遇到访问被拒绝的错误。

ContactStoreAccessType enumeration

在这种情况下,您可以请求“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').addEventListener("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()

您打开默认商店,我认为开发人员无法访问它。