Не удается прочитать номер телефона из запроса контент-провайдера

Я использовал начальную активность с намерением выбрать контакт и получить данные из метода. onActivityResultметод устарел и должен использовать registerForActivityResultрешение.

До:

      val intent = Intent(Intent.ACTION_PICK).apply {
            type = ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE
        }
startActivityForResult(intent, SELECT_PHONE_NUMBER)

if (requestCode == SELECT_PHONE_NUMBER && resultCode == RESULT_OK) {
        // Get the URI and query the content provider for the phone number
        val contactUri = data!!.data

        val projection = arrayOf(ContactsContract.CommonDataKinds.Phone.NUMBER)
        val cursor = context?.contentResolver?.query(
            contactUri ?: Uri.EMPTY, projection,
            null, null, null
        );

        // If the cursor returned is valid, get the phone number
        if (cursor != null && cursor.moveToFirst()) {
            val numberIndex =
                cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)
            var number = cursor.getString(numberIndex) // ->> this is phone Number String
        }

        cursor?.close()
    }

Когда я использую

      registerForActivityResult(ActivityResultContracts.PickContact())

Я не могу получить доступ к номеру телефона, не могу запросить DataProvider с помощью

      ContactsContract.CommonDataKinds.Phone.NUMBER 

или же

      ContactsContract.PhoneLookup.NUMBER

Я получаю исключение:

java.lang.IllegalArgumentException: недопустимые данные столбца1

или (при использовании CommonDataKinds.Phone.NUMBER)

java.lang.IllegalArgumentException: неверный номер столбца

(при использовании PhoneLookup.NUMBER)

0 ответов

Другие вопросы по тегам