0

У меня есть приложение, которое широко использует файловую систему, включая внешнюю SD-карту.Использование платформы доступа к хранилищу Android и прямого доступа к файлам

В настоящее время он использует API файлов для создания/удаления/списка файлов, но я бы хотел использовать новую платформу доступа к хранилищу Android.

Проблема в том, что почти 60% установленной базы все еще находится на JB и ниже, и мне нужно новое Intent.ACTION_OPEN_DOCUMENT_TREE. Я не совсем уверен, как это осуществить.

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

Что делают другие люди? Как вы справляетесь с этой ситуацией?

+0

Я надеюсь, что эта библиотека поможет вам _https: //github.com/bartwell/ExFilePicker_ – Rick

+1

См. [Android-simple-storage] (https://github.com/sromku/android-simple-storage) и [G -Rex] (https://github.com/Naturally-Being/G-Rex) – mmlooloo

ответ

0

Сделайте некоторые абстракции своих операций.

Если вы используете File во многих местах, сначала замените его на некоторый абстрактный класс интерфейса, такой как FileSystem, предоставляя такую ​​же функциональность, как File, но скрывая детали реализации. Вся работа с файлом должна быть удалена и помещена только в одну реализацию вашего интерфейса TheFile, названную, например, NativeFileSystem. Внедрите все необходимые функции, такие как open/delete/rename/create.

Используйте заводскую функцию для создания FileSystem, например, в вашем классе приложений. Это место, где вы позже принимаете решение о том, что представляет собой фактический класс, созданный для работы.

Когда вы проверяете, что у вас скрыты детали реализации и работает приложение, вы можете создать новую реализацию с именем, например, SAFFileSystem, и реализовать необходимые функции, но так, как это позволяет Storage Access Framework.

Будьте готовы к тому, что некоторые методы, которые могут быть запущены в файле в основном потоке, вероятно, будут асинхронными. Это связано с тем, что SAF может показывать диалог и запрашивать подтверждение. Таким образом, в вашем приложении могут быть некоторые изменения, связанные с вызовами методов.

Надеюсь, что это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^