废话不多说,直接上代码
//getContentResolver()是Activity的方法,若不在Activity需获得Activity的上下文。例如Context.getContentResolver()
ContentResolver cr = getContentResolver(); //第一步先删除Contacts表中的数据 cr.delete(ContactsContract.Contacts.CONTENT_URI, ContactsContract.Contacts._ID + " =?", new String[]{contactId+""}); //第二步再删除RawContacts表的数据 cr.delete(ContactsContract.RawContacts.CONTENT_URI, ContactsContract.RawContacts.CONTACT_ID + " =?", new String[]{contactId+""});
至于为什么先删除Contacts表再删除RawContacts,大家可以试下,我的测试结果是联系人确实删除了,但留下了个无姓名的记录。
上面第二步需要注意的是RawContacts表有两个ID,一个是表主键_ID,另一个是对应到Contacts表的CONTACT_ID,匹配条件联系人ID对应的是RawContacts表的CONTACT_ID而不是_ID,