在 Android 中使用存储访问框架保存文件

Saving file using Storage Access Framework in Android

我正在将文档访问框架与我的云存储访问应用程序集成。 使用 this 文档我已经能够访问该文件并检索它(我只是使用 Gmail 应用程序的附加功能来检查它)。

我现在正在尝试找到如何使用相同的方法保存文件(通过应用程序直接将文件保存到云存储)并且我做了以下更改:

对于 getRoots 调用,

row.add(Root.COLUMN_FLAGS, Root.FLAG_SUPPORTS_CREATE);

而且我还覆盖了 createDocument 方法。

我没有看到太多关于如何执行此操作的示例代码或文档。我还看到一堆应用程序,如 "Photos" 应用程序有 "Share" 按钮,它们使用不同的方法(日志显示 miniShareActivity)而我的应用程序没有显示在其中(看起来它正在使用不同的文件共享机制)

我正在寻找关于

的信息
  1. 如何使用 SAF 存储文件(任何示例文件都很好或指向文档的指针)。我假设它将允许用户使用选择器界面导航到文件夹并存储文件。

  2. 如何让应用程序出现在"Minishare activity"应用程序列表中以将文件导入应用程序(看起来它没有提供选择器界面,但我仍然会希望提供支持,以便将文件保存到默认位置)

您在其他应用中提到的共享按钮可能使用了随存储访问框架一起引入的 ACTION_SEND as the Intent action, rather than ACTION_CREATE_DOCUMENT

您可能希望同时支持两者,因为 ACTION_CREATE_DOCUMENT 仅在 KitKat 中引入,而较旧的应用程序可能不会意识到这一点。同样,您可能还希望支持 Intent 操作 ACTION_GET_CONTENT 以在 KitKat 之前的设备上进行读取访问(ACTION_GET_CONTENT 在 KitKat+ 上 运行 时由 SAF 处理,但您的应用程序仍需要处理在 KitKat 之前的设备上 运行 时)。您的 AndroidManifest 中的 <intent-filter> 是否设置为匹配所有这些 Intent 类型?