java.lang.SecurityException: отказ в разрешении: открытие провайдера

Я начинаю намерение выбора изображения, используя:

final Intent pickIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
pickIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(intent, PICK_IMAGE);

И вonActivityResult() Я получаю Uris всех выбранных изображений и запускаю Jobs, которые работают в фоновом режиме, и загружаю эти изображения (https://github.com/yigit/android-priority-jobqueue). Но если я нажму кнопку «Назад» и выйду из активности, то любое задание, которое не было запущено, не сможет получить доступ к выбранному изображению, когда оно запускается и выдает исключение:

java.lang.SecurityException: отказ в разрешении: открытие провайдера com.google.android.apps.photos.contentprovider.MediaContentProvider из ProcessRecord {...} (pid = 2407, uid = 10117), который не экспортируется из uid 10123

Причина этого в том, что разрешение отменяется после завершения действия. По словам докhttps://developer.android.com/guide/topics/providers/content-provider-basics.html:

Это разрешения для определенного URI контента, которые действуют до тех пор, пока действие, которое их получает, не завершено.

У меня вопрос, есть ли обходной путь к этому? Как получить разрешение на уровне приложения или что-то?

Какие есть альтернативы для решения этой проблемы? Одним из быстрых решений кажется сделать копию всех выбранных изображений и затем загрузить их, но это кажется последним средством.

Ответы на вопрос(3)

Ваш ответ на вопрос