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



我正在尝试从Android联系人表中提取已删除的联系人。在搜索了一些Stack Overflow链接后,获取已删除联系人的最佳方法是使用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时。已删除联系人。从光标中删除的联系人的CONTACT_ID,它和我删除的联系人ID相同。但问题是当我试图从ContactsContract获取联系人时。使用ContactsContract的Contacts表。已删除联系人。CONTACT_ID总是返回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表中获取已删除联系人的详细信息。

最新更新