Фон
После перехода на Android Я больше не могу найти подходящий способ получить доступ для записи в папку документов (/storage/emulated/0/Documents
)
И прежде чем кто-либо упомянет о многих других вопросы по хранилищу с заданными областями, я прочитал многие из них, и из того, что я видел до сих пор, все решения используют каталог приложения c или доступ только к каталогу мультимедиа (не доступ к папке документов).
Из того, что я понимаю в Android QI можно выбрать:
- Использовать каталог приложения c, который доступен только моему приложению (или приложениям, которые я предоставляю) разрешение)
- Разрешить пользователю выбирать, где он хочет сохранить файл (я думаю, это может быть общедоступное c местоположение)
ACTION_OPEN_DOCUMENT_TREE
Проблема
Приложения, которые я разрабатываю, используются для проведения тестов по предметам, данные тестов автоматически сохраняются в общедоступной папке «Документы», например: /storage/emulated/0/Documents/myAppName/subjectName/testData-todaysDate.pdf
Когда пользователь хочет получить доступ к тесту По данным они подключают свой смартфон к компьютеру и переходят в папку с документами, а все остальное довольно очевидно. По этой причине я должен использовать общедоступное хранилище. Также представьте, что они хотят открыть тестовые данные на своем телефоне через другое приложение. Та же сделка!
Решение, которое я ищу
Так что решение, которое я ищу, должно быть в состоянии сделать следующее:
- Не запрашивать разрешение несколько раз (один раз в порядке)
- Автоматически сохраняет тестовые данные без запроса пользователя (так как будут проведены сотни тестов)
- Сохраняет в папке c документы, например
/storage/emulated/0/Documents/
- Не требует выбора пользователем каталога, поэтому НЕ
ACTION_OPEN_DOCUMENT_TREE
- В идеале данные являются постоянными, поэтому удаление приложение не приводит к потере данных
Я понимаю, что эти изменения в Android Q призваны привлечь пользователей больше "в l oop" с тем, как приложения получают доступ к своим данным, но как только они понять, как ваше приложение использует ваши данные, проблем не должно быть.