CommonDataKinds.Phone.CONTACT_ID 在联系人数据库中为空
Posted
技术标签:
【中文标题】CommonDataKinds.Phone.CONTACT_ID 在联系人数据库中为空【英文标题】:CommonDataKinds.Phone.CONTACT_ID is null in contacts db 【发布时间】:2019-06-10 16:56:36 【问题描述】:我认为从 Phone.CONTENT_URI 检索联系人时,Phone.CONTACT_ID 列不可能为空。但是,我收到了很多来自我的用户的崩溃报告,例如:
Caused by java.lang.IllegalStateException: activity.contentResolver…taKinds.Phone.CONTACT_ID) must not be null
可能是因为我按 CONTACT_ID 对 sql 结果进行排序,这里是示例代码
activity.contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
arrayOf(ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY,
ContactsContract.CommonDataKinds.Phone.PHOTO_THUMBNAIL_URI,
ContactsContract.CommonDataKinds.Phone.IS_PRIMARY,
ContactsContract.CommonDataKinds.Phone.LAST_TIME_CONTACTED,
ContactsContract.CommonDataKinds.Phone.TIMES_CONTACTED,
ContactsContract.CommonDataKinds.Phone.PHOTO_URI,
ContactsContract.CommonDataKinds.Phone.TYPE,
ContactsContract.CommonDataKinds.Phone.LABEL),
"$ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER = ?" +
" AND $ContactsContract.CommonDataKinds.Phone.NUMBER IS NOT NULL" +
" AND $ContactsContract.CommonDataKinds.Phone.CONTACT_ID IS NOT NULL",
arrayOf("1"),
ContactsContract.CommonDataKinds.Phone.CONTACT_ID)
异常是从我提供的 sn-p 的第一行抛出的。现在我有两个问题:
1) 为什么我在我的 sql 查询中指定了 $ContactsContract.CommonDataKinds.Phone.CONTACT_ID IS NOT NULL
后会看到此错误?
2)Phone.CONTACT_ID在什么情况下为空?
【问题讨论】:
【参考方案1】:尝试将排序参数更改为
val sortOrder = "$ContactsContract.CommonDataKinds.Phone.CONTACT_ID ASC"
CONTACT_ID
也不应该为空,所以我会删除
AND $ContactsContract.CommonDataKinds.Phone.CONTACT_ID IS NOT NULL
部分。
【讨论】:
但是如何添加"$ContactsContract.CommonDataKinds.Phone.CONTACT_ID ASC"
可以改变查询? “ASC”是默认排序顺序。 CONTACT_ID 也不应该为 null 但它看起来是 null,还是您认为错误消息具有误导性?以上是关于CommonDataKinds.Phone.CONTACT_ID 在联系人数据库中为空的主要内容,如果未能解决你的问题,请参考以下文章