CommonDataKinds.Phone.CONTACT_ID является нулевым в контактах, дБ - PullRequest
0 голосов
/ 16 января 2019

Я думал, что при извлечении контактов из Phone.CONTENT_URI столбец Phone.CONTACT_ID не может быть пустым. Однако я получил много сообщений о сбоях от моих пользователей, таких как этот:

Caused by java.lang.IllegalStateException: activity.contentResolver…taKinds.Phone.CONTACT_ID) must not be null

Возможно, потому что я сортирую результаты sql по CONTACT_ID, вот пример кода

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)

Исключение выдается из первой строки предоставленного мною фрагмента. И теперь у меня есть два вопроса:

1) Почему я вижу эту ошибку, хотя я указал ${ContactsContract.CommonDataKinds.Phone.CONTACT_ID} IS NOT NULL в своем sql-запросе?

2) В какой ситуации Phone.CONTACT_ID имеет значение null?

1 Ответ

0 голосов
/ 16 января 2019

попробуйте изменить параметр сортировки на

val sortOrder = "${ContactsContract.CommonDataKinds.Phone.CONTACT_ID} ASC"

также CONTACT_ID никогда не должно быть нулевым, поэтому я бы удалил

AND ${ContactsContract.CommonDataKinds.Phone.CONTACT_ID} IS NOT NULL

часть.

...