未能使用ContentProviderOperation删除整个联系人 [英] Failure to delete entire contact using ContentProviderOperation

查看:159
本文介绍了未能使用ContentProviderOperation删除整个联系人的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在与Android的联系。我可以向他们展示,但更新
当我要删除的,它并没有完全删除。在联系人
应用被示出为(未知)而没有任何数据。这是我的例子:

I have been working with Android contacts. I am able to show them, update but when I want to delete any, it is not deleted completely. In Contacts application is shown as (Unknown) without any data. Here is my example:

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);

我应该做别的事情完全删除联系人?
看来,这些code表ContactsContract.Data删除信息,但我可以做彻底删除联系人不会删除表ContactsContract.Contacts或ContactsContract.RawContacts.how相关的元素?

Should I do anything else to delete contact entirely? It seems that these code delete info in table ContactsContract.Data but it does not delete element related in table ContactsContract.Contacts or ContactsContract.RawContacts.how can i do to delete an contact completely?

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

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

另外,我试图去precated方法。它剂量的工作,但我不想这样做。下面是示例code:

also, i tried deprecated method. It dose work, but i do not want to do so. Here is the sample code:

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

如果我修改此code到

and if i modify this code to

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

有没有任何影响。

这是否意味着人们只能通过删除名称,而不是通过其ID联系人?
在地球上我能做些什么来删除联系人?

Does it mean that one can only delete a contact by name instead of by its id? What on earth can i do to delete contact?

谢谢,
Enchor

Thanks, Enchor

推荐答案

您正试图删除数据删除的数据行表。
这是行不通的。

You are trying to delete a contact by deleting its data rows from the Data table. That wouldn't work.

一个接触由几个原始联系人,每个原始姓名已储存在数据表数据。
当删除联系人,所有原材料接点被删除,以及,用自己的数据一起。

A contact is made up of several raw-contacts, each raw-contact has its data saved in the Data table. When deleting a contact, all raw-contacts get deleted as well, along with their data.

做到这一点:

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

删除将是1,如果操作成功。

deleted will be 1 if the operation succeeded.

这篇关于未能使用ContentProviderOperation删除整个联系人的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆