0

我有一个应用程序,广泛使用包括外部SD卡的文件系统。一起使用Android存储访问框架和直接文件访问

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

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

我以为我会写一个通用接口在我的应用程序中使用,就像MyFile一样,然后根据平台版本使用适当的API,但除非已经有了一个库,否则它会太多。

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

+0

我希望这个库可以帮助你_https://github.com/bartwell/ExFilePicker_ – Rick 2015-01-05 00:12:30

+1

请参阅[android-simple-storage](https://github.com/sromku/android-simple-storage)和[G -Rex](https://github.com/Naturally-Being/G-Rex) – mmlooloo 2015-01-05 03:48:42

回答

0

对您的操作进行抽象。

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

例如在您的Application类中使用工厂函数创建FileSystem。这是你后来决定什么是为工作创建的实际班级的地方。

当您测试隐藏实现细节并且您的应用程序有效时,可以创建一个名为SAFFileSystem的新实现,并实现所需的功能,但以Storage Access Framework允许的方式执行。

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

希望有所帮助。