【问题标题】:ContactsContract.Data.CONTENT_URI getting deleted contactsContactsContract.Data.CONTENT_URI 获取已删除的联系人
【发布时间】:2018-02-04 09:36:04
【问题描述】:

** 编辑**

这是有问题的 URI:ContactsContract.Data.CONTENT_URI

有没有办法知道联系人是否被标记为从此 URI 中删除?

我已经尝试查询 DELETED 列,但它因 SQL 异常而崩溃

感谢您的帮助

** 附上代码**

ContentQuery contentQuery = new ContentQuery(ContactsContract.Data.CONTENT_URI)
            .column(ContactsContract.CommonDataKinds.Phone.CONTACT_ID)
            .column(ContactsContract.CommonDataKinds.Phone.NUMBER)
            .column(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)
            .column(ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY)
            .column(CommonDataKinds.Note.NOTE)
            .column(Data.MIMETYPE)
            .column(ContactsContract.CommonDataKinds.Phone.STARRED)
            .where(ContactsContract.CommonDataKinds.Phone.DELETED, "=", "1");

ContentQuery 是一个查询构建器接口

【问题讨论】:

  • of knowing if a contact is marked for deletion from this URI?。 ???这是关于哪里的?我看没有合同。我看不到 uri。
  • 请看标题,但我会把它添加到描述本身:)
  • RawContacts.DELETED 字段添加到您的投影应该可以工作,因为您可以从 RawContacts 表中进行隐式连接,特别是提到DELETED 可以工作。显示您的代码
  • 我很确定 DELETED 表的原因就是因为这个。在编辑中添加
  • 嘿,你解决了吗?我也得到同样的东西。已删除没有号码的联系人。

标签: android android-contentprovider android-contacts


【解决方案1】:

我没有尝试过,但是要从RawContactsas mentioned in the docs 中获得DELETED 字段的隐式连接,您需要将RawContacts.DELETED 添加到您的投影中。

检查以下代码,它应该打印属于已删除联系人的数据:

String[] projection = new String[] { Phone.CONTACT_ID, Phone.DISPLAY_NAME, Phone.NUMBER, RawContact.DELETED };
Cursor cur = contentResolver.query(ContactsContract.Data.CONTENT_URI, projection, null ,null, null);
while (cur.moveToNext()) {
    if (cur.getInt(3) == 1) {
        Log.i("TAG", "found a deleted data row: " + cur.getLong(0) + ", " + cur.getString(1) + ", " + cur.getString(2));
    }
}
cur.close();

【讨论】:

  • 使用 Data.CONTENT_URI 并向 RawContact.DELETED 添加投影会引发未找到列异常
猜你喜欢
  • 1970-01-01
  • 2016-04-07
  • 2021-09-04
  • 1970-01-01
  • 2016-05-12
  • 1970-01-01
  • 2018-10-14
  • 2017-01-27
  • 1970-01-01
相关资源
最近更新 更多