Я реализовал выбор контактов из телефонной книги в своем приложении. Чтобы интент с действием PICK работал на android 11, я добавил это в свой манифест:
<queries>
<intent>
<action android:name="android.intent.action.PICK" />
<data android:mimeType="vnd.android.cursor.dir/phone_v2" />
</intent>
</queries>
Код отлично работает на версиях Android 10 и ниже. Но на версии Android 11 контакт, который я выбрал из телефонной книги, не вставляется в текстовое поле моего приложения, потому что ContentResolver.query возвращает пустой курсор. it.moveToFirst() возвращает false Вот мой код:
Constants.START_PICK_CONTACT_ACTION -> {
data?.data?.let { uri ->
activity.contentResolver.query(uri, null, null, null, null)?.use {
if (it.moveToFirst()) {
val number: String? = it.getString(it.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))
etPhoneNumber.setText(number)
}
}
}
}
Помогите мне, пожалуйста.
<queries>
для этого кода, хотя вы можете использовать какой-то другой код. Под пустым курсором вы подразумеваете, что это допустимыйCursor
, но не имеет строк (поэтомуit.moveToFirst()
возвращаетfalse
)? - person CommonsWare   schedule 29.09.2020query()
попробуйте указать нужную проекцию (2-й параметр) вместо передачиnull
и посмотрите, поможет ли это. - person CommonsWare   schedule 29.09.2020