检测android联系人是否已被删除

ShR*_*NsH 3 android contacts contactscontract android-contacts contentobserver

我正在尝试维护一个联系人数据库,并在 URI 中的某些内容发生更改时立即获取对添加/更新/删除的回调。

我写了一个 ContentObserver 来观察ContactsContract.Contacts.CONTENT_URI上的联系人。一旦联系人发生变化,我就会收到回调,然后通过检查ContactsContract.Contacts.CONTACT_LAST_UPDATED_TIMESTAMP 来更新我的数据库。虽然这适用于添加/更新,但它不适用于删除联系人

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

我知道这些类型存在许多问题,但我无法弄清楚删除联系人的具体内容。

是否存在执行此操作的方法?

ShR*_*NsH 6

正如我在上面的评论中也发布的那样,以下代码适用于 API 级别 18 及更高级别。您可以查询 uriContactsContract.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);
Run Code Online (Sandbox Code Playgroud)