微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决无法从 ContactsContract.Contacts.CONTENT_URI 获取已删除的联系人

我正在尝试从 android 联系人表中获取删除的联系人。
搜索了许多 so 链接后,获取删除联系人的最佳方法是使用 ContactsContract.DeletedContacts
我可以从 DeletedContacts 表中获取删除的联系人。

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 表中获取联系人时,它总是返回 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);

你能告诉我我哪里做错了吗?

解决方法

当联系人从主 Contacts 表中删除时,它显然会从该表中删除,因此该联系人不会出现在联系人应用程序中用户正在使用他们当前联系人的视图。

因此您只能在 DeletedContacts 表中获取已删除联系人的详细信息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。