data?.data
преобразуется в Uri
или null
. Kotlin рассматривает null
как часть системы типов, поэтому выводимый тип - Uri?
(?
означает, что значение может быть null
). Однако openInputStream()
не поддерживает null
. Итак, вам нужно проверить, является ли imageUri
null
, и, если это так, не пытайтесь его использовать.
Например, вы можете использовать безопасный вызов (?.
) с let()
:
data?.data?.let { imageUri ->
val imageStream = contentResolver.openInputStream(imageUri)
val selectedImage = BitmapFactory.decodeStream(imageStream)
profile_page_pimage.setImageBitmap(selectedImage)
}
Теперь, если вы не получили Uri
от data?.data
, вы не получите ошибку sh при попытке прочитать несуществующий контент.