Отказ в доступе к картинке URI при перезапуске приложения - PullRequest
0 голосов
/ 26 мая 2018

Это не было бы программированием на Android без случайного перетягивания волос ...

Использование эмулятора на данный момент ...

Это, очевидно, новая функция:

Permission Denial: opening provider com.google.android.apps.photos.contentprovider.impl.MediaContentProvider from ProcessRecord{6ebfe9e 22355:xxx/u0a140} (pid=22355, uid=10140) that is not exported from UID 10068

Доступ к EXTERNAL_STORAGE был предоставлен во всех случаях.

Сценарий:

  1. Пользователь выбирает картинку (используя ACTION_GET_CONTENT), результат активности хороший, и картинка отображается в контексте моего приложения.
  2. URI к изображению сохраняется в БД приложения.
  3. Приложение перезапускается.
  4. Попытка получить доступ к такой же URI и получитьвышеупомянутое исключение отказа в разрешении.

Затем попытался takePersistableUriPermission на исходном результате действия выбора изображения, и это выдает исключение, указывающее, что нет постоянных разрешений.

РЕДАКТИРОВАТЬ: Хорошо, я 'мы реализовали принятый ответ (но только с использованием OPEN_DOCUMENT) и больше не пытались спроецировать результирующий URI в медиа-путь.Поэтому в акте покаяния я снова заявляю:

Я никогда не буду пытаться преобразовать URI в путь к Media Store.

(даже если GET_CONTENT и проецируется один разработал - хорошо, я не могу с собой поделать.)

1 Ответ

0 голосов
/ 26 мая 2018

Действительно.

Uries, полученные с помощью ACTION_GET_CONTENT, действительны только до тех пор, пока ваше приложение работает.

Если вы хотите сохранить постоянный uri, начните с ACTION_OPEN_DOCUMENT_TREE, а затем в onActivityResult сделайте полученные разрешения постоянными..

Посмотрите на takePersistabkeUriPermission ().

(или что-то в этом роде).

Вам не нужны разрешения на внешнее хранилище и тому подобное.

...