检测是否已删除Android联系人

时间:2016-09-19 12:58:01

标签: android contacts android-contacts contactscontract contentobserver

我正在尝试维护联系人数据库,并在URI中发生更改后立即获取Add / Update / Delete回调。

我编写了一个ContentObserver来观察联系人上的 ContactsContract.Contacts.CONTENT_URI 。我会在联系人更改后立即收到回调,然后通过检查 ContactsContract.Contacts.CONTACT_LAST_UPDATED_TIMESTAMP 来更新我的数据库。 虽然这适用于添加/更新,但无法删除联系人

我不想解析我在内存中的所有联系人并检查android数据库。这需要时间和CPU。

我知道这些类型存在很多问题,但我无法找出删除联系人的具体内容。

是否有办法执行此操作?

1 个答案:

答案 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);