Windows 10 UWP中Contact.DeleteAsync()方法缺失,如何删除联系人?
为何Contact.DeleteAsync()方法缺失/报错?
原因分析
- 权限不足:你请求的是
ContactStoreAccessType.AllContactsReadOnly只读权限,该权限下无法执行删除联系人的操作,相关修改类API会被限制。 - API使用错误:UWP的
Contact类本身并没有DeleteAsync()实例方法,删除联系人需要通过ContactStore对象的DeleteContactAsync()方法来完成。
解决办法
步骤1:申请正确的联系人访问权限
将RequestStoreAsync的参数改为可读写权限,比如ContactStoreAccessType.AllContactsReadWrite(需在应用清单中声明联系人权限):
var contactStore = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AllContactsReadWrite);
步骤2:使用ContactStore的DeleteContactAsync方法删除联系人
替换原来的contact.DeleteAsync()调用,改为通过联系人ID调用ContactStore的删除方法:
private static async Task DoContactDelete() { var contactStore = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AllContactsReadWrite); var contacts = await contactStore.FindContactsAsync(); foreach (var contact in contacts) { var text = contact.ToString(); // 使用ContactStore的DeleteContactAsync方法,传入联系人ID await contactStore.DeleteContactAsync(contact.Id); } }
额外注意
- 确保在应用的Package.appxmanifest中声明了联系人权限:在“功能”标签下勾选“联系人”。
- 如果只需要删除自己应用创建的联系人,可以使用
ContactStoreAccessType.LimitedWriteOnly权限,该权限不需要用户授予广泛的联系人访问权限。
内容的提问来源于stack exchange,提问作者Pacala_ba
相关产品推荐
相关产品推荐

