无法从 ContactsContract.Contacts.CONTENT_URI 中提取已删除的联系人

Unable to fetch deleted contacts from ContactsContract.Contacts.CONTENT_URI

我正在尝试从 Android 个联系人 table 中获取已删除的联系人。搜索一些 Stack Overflow 链接后,获取已删除联系人的最佳方法是使用 ContactsContract.DeletedContacts。我可以从 DeletedContacts table.

中获取已删除的联系人
val deletedContactsProjection = arrayOf(ContactsContract.DeletedContacts.CONTACT_ID,ContactsContract.DeletedContacts.CONTACT_DELETED_TIMESTAMP)
val contactLastDeletedTimeStamp = SharedPreferenceManager.instance.getLongFromPreference("contact_sync_last_updated_timestamp")
val deletedContactSelection = ContactsContract.DeletedContacts.CONTACT_DELETED_TIMESTAMP + " > ?";
val deletedContactSelectionArgs = arrayOf<String>(contactLastDeletedTimeStamp.toString())
var deletedContactsCursor = context.contentResolver.query(ContactsContract.DeletedContacts.CONTENT_URI, deletedContactsProjection,deletedContactSelection, deletedContactSelectionArgs,null)

使用上面的光标,我可以获取最后删除的联系人。当我从光标中查看已删除联系人的 ContactsContract.DeletedContacts.CONTACT_ID 时,它与我删除的联系人 ID 相同。但问题是,当我尝试使用 ContactsContract.DeletedContacts.CONTACT_ID 从 ContactsContract.Contacts table 获取联系人时,它总是返回 null。

这是我正在使用的查询:

String[] contactNumberProjection = {ContactsContract.Contacts._ID};
String contactId = deletedContactsCursor.getString(deletedContactsCursor.getColumnIndex(ContactsContract.DeletedContacts.CONTACT_ID));
String contactSelection = ContactsContract.Contacts._ID + " = ?";
String[] contactSelectionArg = {contactId};
Cursor contactCursor =
context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,contactNumberProjection,contactSelection,contactSelectionArg,null);

我哪里错了?

当联系人从主要Contactstable删除时,显然删除table 这样联系人就不会出现在用户正在使用的联系人应用程序中查看他们当前的联系人。

因此您只能在 DeletedContacts table.

中获取已删除联系人的详细信息