【问题标题】:Using Android Storage Access Framework and direct file access together结合使用 Android Storage Access Framework 和直接文件访问
【发布时间】:2014-11-25 11:42:29
【问题描述】:

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

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

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

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

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

【问题讨论】:

标签: android android-sdcard android-5.0-lollipop documentfile


【解决方案1】:

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

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

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

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

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

希望对您有所帮助。

【讨论】:

  • 既然每个人都有这个问题,也许有人已经实现了这个其他人可以使用的抽象?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-27
  • 2020-05-16
  • 1970-01-01
  • 1970-01-01
  • 2014-05-26
  • 1970-01-01
  • 2013-10-13
相关资源
最近更新 更多