添加联系人Windows 10 通用
Add contacts Windows 10 Universal
是否可以在 Windows10 中像在 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;
});
});
但是我遇到了 访问被拒绝 错误。
如有任何帮助,我们将不胜感激。提前致谢!
首先,确保您已在应用清单中添加联系人功能。
<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()
您打开默认商店,我认为开发人员无法访问它。
是否可以在 Windows10 中像在 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;
});
});
但是我遇到了 访问被拒绝 错误。
如有任何帮助,我们将不胜感激。提前致谢!
首先,确保您已在应用清单中添加联系人功能。
<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()
您打开默认商店,我认为开发人员无法访问它。