Как создать папку приложения, доступную также другим приложениям, использующим SAF, в последней версии Android, не нарушая работу пользователя

#android #storage-access-framework #android-storage #android-11

#Android #платформа доступа к хранилищу #android-хранилище #android-11

Вопрос:

Сценарий Приложение создает документы и должно сохранять и открывать их. До того, как SAF создал папку MyAppDocument, в которой приложение может хранить и открывать каждый файл, это была плавная операция, теперь с SAF, если я использую intent с ACTION_OPEN_DOCUMENT_TREE , чтобы получить доступ к месту хранения, где должна быть создана эта папка:

1- Появляется диалоговое окно выбора доступа к каталогу

2- Если средство выбора расположено на основном пути хранения (как на внутренней, так и на внешней SD-карте), и я нацелен на последний уровень API Android 30, путь не может быть выбран, а также появляется дополнительное пугающее предупреждение о конфиденциальности, которое предлагает пользователю создать новую папку или выбрать другой путь, чтобы избежать проблем с конфиденциальностью, как показано на рисункеизображение (абсурдное, учитывая, что предполагается, что это пространство пользователя, а не какой-либо системный корневой каталог)

введите описание изображения здесь

Пользователь все еще может следовать предложению выбрать другой путь или создать другую папку, а затем выбрать такой путь, но это ужасно для пользовательского интерфейса, и многие пользователи удаляют приложение, обеспокоенное или напуганное.

Есть ли другой способ создать папку для приложения, к которой может быть легко получить доступ пользовательский файловый менеджер другие приложения (чтобы пользователь мог легко копировать, открывать, перемещать и управлять файлами, созданными внутри него), не требуя от пользователя большого количества ручных действий?

Комментарии:

1. «не задавая пользователю так много ручных действий?» — «так много ручных действий» ничем не отличается от работы в настольной ОС, кроме отсутствия виджета дерева. Диалоговые окна «Открыть файл», «сохранить файл как» и «выбрать каталог» являются общими для настольных приложений (и, соответственно, для веб-приложений, использующих локальные файлы).).

2. @CommonsWare Даже на рабочем столе не требуется так много шагов для использования приложения после установки, на каждом рабочем столе есть доступное пользовательское пространство, где приложение работает без дополнительных специальных разрешений, теперь предполагаемое пользовательское пространство ограничено аналогичным образом с корневым доступом, а опыт работы на компьютереприложение для телефона должно быть более плавным, чем на настольном ПК

3. СОЗДАТЬ НОВУЮ ПАПКУ не пугает. И вы можете позволить пользователю создать для вашего приложения удобную папку, доступную и для других приложений, используя saf.

4. «на каждом рабочем столе есть доступное пространство пользователя, где приложение работает без дополнительных специальных разрешений» — в первую очередь, в Android, это getFilesDir() , getCacheDir() , getExternalFilesDir() , getExternalCacheDir() , и связанные с ними методы Context . Во-вторых, это несколько конкретных коллекций MediaStore . «и работа с приложением для телефона должна быть более плавной, чем на настольном ПК» — я категорически не согласен.

5. @CommonsWare На рабочем столе установленное приложение может создавать папки и читать и записывать файлы в пути пользователя без всего такого беспорядка, в Android больше нет, и я должен спросить разрешение на хранение, разрешение на папку, пользователь должен создать другую папку «вручную» (если у вас нет другого решения), а затем оннеобходимо нажать разрешить. Это объективно намного хуже, чем на рабочем столе, а не тот же опыт.