Возможно, это дублирующий вопрос, но ни один из кодов не помог мне, и некоторые ответы устарели и теперь устарели. Я делаю приложение android и хочу получить и сохранить фотографию профиля пользователя в своем приложении. URI изображения предоставляется классом FirebaseUser как URI, но я хочу знать, как извлечь растровое изображение из URI и сохранить его в папке filesDir () приложения и получать из него рисованное изображение всякий раз, когда я этого захочу. Я явно пробовал некоторые коды, но ни один из них не работает. Два способа, которые я попробовал: -
fun getBitmap(context: Context, selectedImage: Uri): Bitmap? {
val imageStream = context.contentResolver.openInputStream(selectedImage)
val image = BitmapFactory.decodeStream(imageStream, null, BitmapFactory.Options())
imageStream?.close()
return image
}
Другой метод, который я нашел, - это использование ImageDecoder и MediaStore's getBitmap()
(что устарело)
val bitmap = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
ImageDecoder.decodeBitmap(ImageDecoder.createSource(contentResolver, Uri.parse("https://lh3.googleusercontent.com/a-/link"))) //here parsing a google account profile pic link
} else {
MediaStore.Images.Media.getBitmap(contentResolver, Uri.parse("https://lh3.googleusercontent.com/a-/link"))
}
Проблема всякий раз, когда я пробую что-либо из этого, приложение просто продолжает сбой за исключением java.io.FileNotFoundException: No content provider
.
Я что-то упускаю? Нужна ли нам какая-либо конфигурация манифеста в приложении для доступа к URI из inte rnet?