Есть ли способ получить доступ к фреймворку доступа к хранилищу Android (SAF) из Dart?

#android #flutter #dart #storage-access-framework

#Android #flutter #dart #хранилище-доступ-фреймворк

Вопрос:

Я пытаюсь написать приложение для блокнота с использованием Flutter, которое сохранит все заметки в выбранной пользователем папке.
Чтобы его можно было синхронизировать с помощью чего-то вроде Syncthing.
Похоже, что начиная с Android 10, это невозможно с помощью обычного файлового API в Dart.
Есть ли какой-либо способ получить доступ к новому SAF API из Dart?

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

1. Если вы позволите пользователю выбрать папку, вы получите uri SAF. И я полагаю, что вы получили это уже с Android Kitkat. Итак, вам уже давно приходилось использовать SAF.

2. Далее: с помощью второстепенного атрибута тега в файле манифеста вы можете позволить своему приложению на устройстве Android 10 вести себя как раньше.

3. @blackapps да. Я видел, что он был там некоторое время. Я новичок в разработке приложений. Я начал с flutter несколько недель назад. Я искал способ правильной записи файла на SD-карту. Только что наткнулся на API SAF, но не смог понять, как его использовать из Flutter.

4. может кто-нибудь предложить зависимость для получения uri SAF в flutter?

5. @Sparks Вы нашли какую-либо соответствующую зависимость от SAF?

Ответ №1:

После изменения политики безопасности для Android 9 или выше. Для получения доступа к хранилищу (basic) рекомендуется использовать опцию API платформы доступа к хранилищу (SAF).

Вы можете просто выполнить эту задачу, используя пакет flutter под названием saf. Вы можете выполнить поиск в www.pub.dev каталог пакетов.

По сути, он предоставляет вам всю встроенную реализацию API платформы доступа к хранилищу на стороне dart. Он открывает собственный проводник файлов ОС, после чего пользователь может предоставить разрешение на любой конкретный каталог и получить доступ для выполнения некоторых операций над ним.

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

1. Вот ссылка на пакет: saf

2. Искал эту функциональность почти месяц, но безуспешно, и, наконец, это спасло мне жизнь! Еще раз спасибо 🙂