Мое приложение имеет targetSdkVersion = 29 (новая политика хранения с ограниченными возможностями) и не имеет флага requestlegacyexternalstorage, включенного в манифесте (я не хочу его включать).
Способы, которыми я пытался составить намерение:
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE);
Также пробовал это
val galleryIntent = Intent(Intent.ACTION_PICK).apply {
type = PICK_INTENT_TYPE
}
flowInterruptBlocker?.blockFlowInterruption()
startActivityForResult(galleryIntent, GALLERY_INTENT_REQUEST_CODE)
Также пробовал добавить CATEGORY_OPENABLE
к намерению. Ни одна из этих работ.
Итак, когда я отправляю намерение выбрать изображение из галереи, некоторые приложения с игрового рынка возвращают мне Uri с файловой схемой, например: file: ///storage/emulated/0/Download/sample.jpg
Когда я пытаюсь преобразовать его в растровое изображение (для установки в imageView), я получаю исключение EACCES (Permission denied).
Я попытался прочитать это с помощью:
java.File Api
contentResolver.openInpuStream()
contentResolver.openFileDescriptor()
ImageDecoder
Ничего не помогает. Как я вижу, я не могу читать Uri с файловой схемой на Android 10 (таргетинг на 29 SDK) без флага requestlegacyexternalstorage, включенного в моем манифесте.
Если я ошибаюсь, пожалуйста, помогите мне понять, как это читать.
Загадочная вещь в том, что эмулятор Android 11 с таргетингом на приложения 29 sdk МОЖЕТ читать этот тип Uri без флага requestlegacyexternalstorage.
И да, я предоставил разрешения READ / WRITE_EXTERNAL_STORAGE.
file:///storage/emulated/.../image.jpeg
Укажите полный путь. - person blackapps   schedule 08.10.2020s i can see i can not read Uri with a file scheme on android 10
Да, можно, но это зависит от полного пути. Вот почему я спросил, - person blackapps   schedule 08.10.2020