Java.lang.SecurityException: отказ в разрешении: открытие поставщика ⇐ Android
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 (намерение, PICK_IMAGE); и в onActivityResult() я получаю URIS всех выбранных изображений и запускаю задания, которые выполняются в фоновом режиме, и загружаю эти изображения (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/top ... asics.html:
Это разрешения для определенного URI контента, которые действуют до тех пор, пока не завершится действие, получившее их.
Мой вопрос: есть ли обходной путь? Типа получить разрешение на уровне приложения или что-то в этом роде?
Какие альтернативы могут решить эту проблему? Кажется, что одним из быстрых решений является копирование всех выбранных изображений и их последующая загрузка, но это, похоже, последнее средство.
Я запускаю намерение выбора изображения, используя:
final Intent PickIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); PickIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); startActivityForResult (намерение, PICK_IMAGE); и в onActivityResult() я получаю URIS всех выбранных изображений и запускаю задания, которые выполняются в фоновом режиме, и загружаю эти изображения (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/top ... asics.html:
Это разрешения для определенного URI контента, которые действуют до тех пор, пока не завершится действие, получившее их.
Мой вопрос: есть ли обходной путь? Типа получить разрешение на уровне приложения или что-то в этом роде?
Какие альтернативы могут решить эту проблему? Кажется, что одним из быстрых решений является копирование всех выбранных изображений и их последующая загрузка, но это, похоже, последнее средство.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как исправить отказ в разрешении при запуске поставщика/bin/phpunit в проекте laravel
Anonymous » » в форуме Php - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-