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

Posted

技术标签:

【中文标题】检测android联系人是不是已被删除【英文标题】:Detect if an android contact has been deleted检测android联系人是否已被删除 【发布时间】:2017-01-27 04:21:15 【问题描述】:

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

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

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

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

有没有办法做到这一点?

【问题讨论】:

你有没有找到任何解决方案,我正在经历同样的事情 @user3475052 : android 为 API 18 及更高版本提供“ContactsContract.DeletedContacts.CONTENT_URI”。您可以使用此内容 Uri 的时间戳来跟踪已删除的联系人。这比通过 Contacts.Content_uri 跟踪联系人要快得多。 嘿,shreyansh,你能解释一下吗 【参考方案1】:

正如我在上面的评论中发布的那样,以下代码适用于 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);

【讨论】:

什么是 mLastContactDeleteTime? @ShReYaNsH 你能解释一下吗? mLastContactDeleteTime 是什么?

以上是关于检测android联系人是不是已被删除的主要内容,如果未能解决你的问题,请参考以下文章

同步 Android 联系人

Android 如何检测更改了哪个联系人?

如何检测更新的android联系人并同步到firestore

如何检测 android 手机联系人应用程序支持结构化邮政地址?

从 android 联系人中删除单个联系人

如何删除 android 2.2 上的联系人?