我一直在使用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来删除联系人? 我该怎么做才能删除联系人?
谢谢, Enchor
答案 0 :(得分:1)
您正试图通过从Data
表中删除其数据行来删除联系人。
这不会起作用。
联系人由多个原始联系人组成,每个原始联系人的数据都保存在Data
表中。
删除联系人时,所有原始联系人及其数据也会被删除。
这样做:
long contactId = 12345;
Uri contactUri = Uri.withAppendedPath(Contacts.CONTENT_URI, String.valueOf(contactId));
int deleted = getContentResolver().delete(contactUri, null, null);
如果操作成功,删除将为1。