【问题标题】: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,你能解释一下吗

标签: android contacts android-contacts contactscontract contentobserver


【解决方案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 是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-19
  • 1970-01-01
  • 2011-03-16
  • 2013-08-11
  • 1970-01-01
  • 2014-02-14
相关资源
最近更新 更多