我有一个广泛使用文件系统的应用程序,包括外部SD卡。
目前它使用文件API来创建/删除/列出文件,但我想使用新的Android存储访问框架。
问题是,几乎60%的安装基础仍在JB及以下,我需要新的Intent.ACTION_OPEN_DOCUMENT_TREE。我不太清楚如何实施它。
我以为我会在我的应用程序中编写一个常用的界面,比如MyFile,然后根据平台版本使用适当的API,但除非已经有一个库,否则它会太多。
其他人在做什么?你如何处理这种情况?
答案 0 :(得分:0)
对您的操作进行一些抽象。
如果在许多地方使用File
,首先将其替换为一些抽象类接口,例如FileSystem
,提供与File
相同的功能,但隐藏实现细节。所有使用File的工作都必须删除并放在您的TheFile接口的一个实现中,例如NativeFileSystem
。实现所有需要的功能,例如打开/删除/重命名/创建。
使用工厂函数在Application类中创建FileSystem
。这是您稍后决定什么是为工作创建的实际类的地方。
当您测试隐藏实现详细信息并且您的应用程序正常工作时,您可以创建名为SAFFileSystem
的新实现,并实现所需的功能,但这是存储访问框架允许的方式。
准备一些可以在主线程上的File上运行的方法可能是异步的。这是因为SAF可能会显示对话框并要求用户进行确认。因此,您的应用中可能会对方法调用进行一些返工。
希望有所帮助。