是否可以通过编程方式将联系人添加到Windows 10中的地址簿/人物应用中,就像在Android中一样?
我有一个存储联系信息的服务器,我想创建一个应用程序来将我的联系人与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;
});
});
但我收到 access denied 错误。
任何帮助将不胜感激。提前谢谢!
答案 0 :(得分:2)
首先,确保您已在应用清单中添加了联系人功能。
<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', 'jeffrey.chen@example.com').done(function () {
console.log("add contact successfully");
});
});
答案 1 :(得分:0)
试试这个
contacts.ContactManager.requestStoreAsync(ContactStoreAccessType.AppContactsReadWrite);
而不是
contacts.ContactManager.requestStoreAsync()
您打开默认商店,我认为开发商无法访问它。