我正在尝试维护联系人数据库,并在URI中发生更改后立即获取Add / Update / Delete回调。
我编写了一个ContentObserver来观察联系人上的 ContactsContract.Contacts.CONTENT_URI 。我会在联系人更改后立即收到回调,然后通过检查 ContactsContract.Contacts.CONTACT_LAST_UPDATED_TIMESTAMP 来更新我的数据库。 虽然这适用于添加/更新,但无法删除联系人。
我不想解析我在内存中的所有联系人并检查android数据库。这需要时间和CPU。
我知道这些类型存在很多问题,但我无法找出删除联系人的具体内容。
是否有办法执行此操作?
答案 0 :(得分:1)
正如我在上面的评论中发布的那样,以下代码适用于API级别18及更高版本。
您可以在uri ContactsContract.DeletedContacts.CONTENT_URI
上进行查询,以获取已删除的所有联系人列表。
我的查询如下:
String selection = ContactsContract.DeletedContacts.CONTACT_DELETED_TIMESTAMP + " > ?";
String[] selectionArgs = new String[]{String.valueOf(mLastContactDeleteTime)};
Cursor cursor = mContext.getContentResolver().query(ContactsContract.DeletedContacts.CONTENT_URI, null, selection, selectionArgs, null);