gpt4 book ai didi

android - 无法使用 ContentProviderOperation 删除整个联系人

转载 作者:行者123 更新时间:2023-11-29 02:16:54 25 4
gpt4 key购买 nike

我一直在处理 Android 联系人。我可以给他们看,更新但是当我想删除任何内容时,它并没有完全删除。在联系人中应用程序显示为(未知),没有任何数据。这是我的例子:

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newDelete(Data.CONTENT_URI)
.withSelection(Data.CONTACT_ID + "=?", new String[]{selectedid})
.build());
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

我还应该做些什么来完全删除联系人吗?这些代码似乎删除了表 ContactsContract.Data 中的信息,但它没有删除表 ContactsContract.Contacts 或 ContactsContract.RawContacts 中相关的元素。我怎样才能完全删除联系人?

============================================= =============================

另外,我尝试过弃用的方法。它剂量工作,但我不想这样做。这是示例代码:

ContentResolver contentResolver = m_cContent.getContentResolver();
contentResolver.delete(People.CONTENT_URI, People.NAME + "=?", new String[] { SelectedName });

如果我将这段代码修改为

ContentResolver contentResolver = m_cContent.getContentResolver();
contentResolver.delete(ContactsContract.Contacts, ContactsContract.Contacts._ID + "=?", new String[] { Selectedid });

没有效果。

这是否意味着只能通过名称而不是通过id删除联系人?我到底该怎么做才能删除联系人?

谢谢, anchor

最佳答案

您正在尝试通过从数据 表中删除其数据行来删除联系人。那是行不通的。

一个联系人由多个原始联系人组成,每个原始联系人的数据都保存在Data 表中。删除联系人时,所有原始联系人及其数据也会被删除。

这样做:

long contactId = 12345;
Uri contactUri = Uri.withAppendedPath(Contacts.CONTENT_URI, String.valueOf(contactId));
int deleted = getContentResolver().delete(contactUri, null, null);

如果操作成功,则删除为1。

关于android - 无法使用 ContentProviderOperation 删除整个联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3058622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com