添加联系人Windows 10通用
问题描述:
是否有可能以编程方式将联系人添加到Windows 10中的地址簿/人应用程序,就像在Android中可能的那样?添加联系人Windows 10通用
我有在其上存储的联系人信息的服务器,我想提出一个应用程序到我的联系人与Windows 10
我试过几件事情进行同步,但它并没有真正的工作了。这是我走了多远:
- 成功下载联系人数据。
- 将联系人数据放入
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;
});
});
但我发现了一个ACCES否认错误。
任何帮助,将不胜感激。提前致谢!
答
首先,确保您在应用清单中添加了联系人功能。
<Capabilities>
<Capability Name="internetClient" />
<uap:Capability Name="contacts"/>
</Capabilities>
如果您没有向联系存储请求读/写权限,您还将获得拒绝访问错误。
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', '[email protected]').done(function() {
console.log("add contact successfully");
});
});
答
试试这个
contacts.ContactManager.requestStoreAsync(ContactStoreAccessType.AppContactsReadWrite);
,而不是这个
contacts.ContactManager.requestStoreAsync()
你打开默认存储,我认为它不能被开发人员访问。
其他答案包含类似的东西。有区别吗?如果没有,为什么你觉得有必要发布另一个答案? –
是的你是对的 –