0

我有一个广泛使用文件系统的应用程序,包括外部 SD 卡。

目前它使用文件 API 来创建/删除/列出文件,但我想使用新的 Android 存储访问框架。

问题是几乎 60% 的安装基础仍在 JB 及以下,我需要新的Intent.ACTION_OPEN_DOCUMENT_TREE。我不太确定如何实施它。

我想我会编写一个通用接口来在我的应用程序中使用类似 MyFile 的东西,然后根据平台版本使用适当的 API,但除非已经有一个库可以做到这一点,否则它会太多。

其他人在做什么?你如何处理这种情况?

4

1 回答 1

0

对您的操作进行一些抽象。

如果你File在很多地方使用,首先将其替换为接口的一些抽象类,例如FileSystem,提供与 相同的功能File,但隐藏实现细节。所有与 File 相关的工作都必须删除并放在 TheFile 接口的一个实现中,例如命名为NativeFileSystem. 实现所有需要的功能,例如打开/删除/重命名/创建。

例如,使用工厂函数FileSystem在您的 Application 类中创建。这是您稍后决定为工作创建的实际类的地方。

当您测试您隐藏了实现细节并且您的应用程序正常工作时,您可以创建名为 example 的新实现SAFFileSystem,并实现所需的功能,但以存储访问框架允许的方式。

准备好一些可以在主线程上的 File 上运行的方法可能是异步的。这是因为 SAF 可能会显示对话框并要求用户确认。因此,您的应用程序中可能会有一些与方法调用相关的返工。

希望有帮助。

于 2015-01-07T16:46:06.203 回答