Можно ли установить изображение для ImageView из пути (внешнего хранилища) на Android 10 и выше? - PullRequest
0 голосов
/ 01 мая 2020

Мне нужно показать изображение в ImageView из картинки, находящейся где-то в памяти телефона пользователя (Внешнее хранилище). Для этого я использовал абсолютный путь к изображению, и он хорошо работал на любом телефоне Android. Но на Android 10 и выше эта стратегия просто не работает (загруженное изображение прозрачно). Я знаю, что с Android 10 Google внесла множество изменений в доступность внешней памяти, но все же, есть ли способ показать изображение с внешнего пути?

Я использовал как растровое декодирование, так и Glide, чтобы установить изображение из пути, но ничего не работает на Android 10+: (

fun setImageFromPath(imagePath: String, imageView: ImageView){
            val imgFile = File(imagePath)
            if (imgFile.exists()) {
                val bitmap = BitmapFactory.decodeFile(imgFile.absolutePath)
                imageView.setImageBitmap(bitmap)
            }
        }

fun setImageFromPathWithGlide(imagePath: String, imageView: ImageView, context: Context){
            Glide.with(context).asDrawable().load(Uri.fromFile(File(imagePath)))
                    .dontTransform()
                    .into(imageView)
        }

1 Ответ

0 голосов
/ 01 мая 2020

Да, это возможно. сначала добавьте эту строку в манифест приложения

 android:requestLegacyExternalStorage="true"

в своем файле Gradle, установите эти параметры (если его нет)

 compileSdkVersion 29

и после получения разрешения на использование доступа к памяти - вы можете загрузить картинку

...