从ContactsContract.RawContacts.CONTENT_URI获取已删除的联系人

时间:2018-04-08 11:20:13

标签: android android-contacts

此查询会在某个时间返回已删除的联系人。我注意到如果删除的联系人属于Gmail帐户并且有号码,那么此查询将不会返回任何结果。

String WHERE_DELETED = "( " + ContactsContract.RawContacts.DELETED + "=1)";

Cursor cursor = context.getContentResolver().query(ContactsContract.RawContacts.CONTENT_URI,
                null,
                WHERE_DELETED,
                null,
                null);

1 个答案:

答案 0 :(得分:0)

RawContact.DELETED 标记要删除的RawContact,一旦相关的SyncAdapter醒来并将删除同步到服务器(例如Google通讯录服务器),实际上已从数据库中删除RawContact,无法再查询

请参阅official documentation

  

"删除" flag:" 0"默认情况下," 1"如果该行已标记为   删除。在raw上调用delete(Uri,String,String [])时   联系,它被标记为删除并从其聚合中删除   联系。同步适配器删除服务器上的原始联系人   然后再次调用ContactResolver.delete,这次通过了   CALLER_IS_SYNCADAPTER查询参数以完成数据删除。

你可以做的是查询ContactsContract.DeletedContacts表,其中包含过去30天内删除的联系人记录,请参阅此处: https://developer.android.com/reference/android/provider/ContactsContract.DeletedContacts.html