4

背景

自 Kitkat (API 19) 以来,谷歌添加了一些限制和 API 来访问 SD 卡(或更准确地说,是第二个外部存储)。

第三方应用程序不能再写入除他们自己以外的任何文件夹上的 SD 卡,除非它们具有 root 权限或者它们是系统应用程序。

谷歌添加了一个内置的系统应用程序,可以管理 SD 卡上的文件,称为“文件选择器”,它有一些用户可以完成的操作。

新的 API 称为“存储访问框架”。关于它的更多信息可以在这里找到。

问题

没有太多关于如何处理以前总是可能的特定操作的信息。诚然,它们被用于所有外部存储操作,但谷歌最近才处理这种类型的存储。

我也没有找到关于可以在新的“文件选择器”上完成的可用事情的足够信息,以及不能用它完成的事情。

该框架似乎支持对属于其他应用程序的文件的操作,但有些文件是由用户复制的(例如从 PC 复制),所以我不确定如何处理这些文件。

问题

  1. 如何处理新 API 的下一个操作:在 SD 卡上的任何位置创建、删除和修改任何文件?

  2. 是否有打开新工具的意图,向用户显示特定路径,他可以在哪里手动对文件进行操作?

  3. 我可以假设从 Kitkat 开始,该工具将永远存在吗?如果没有,我该怎么办?有没有其他选择?

  4. 对于已“修复”此限制写入 sd 卡的用户(例如使用此工具),是否有任何官方方法来确定是否授予完全访问权限?当然,除了尝试在某处创建一个随机文件并将其删除之外......

  5. 新 API 的可用意图是什么?我发现的所有意图都与处理其他应用程序的文件有关,以防它们支持它,但我找不到任何处理任何文件路径的意图。

4

2 回答 2

1

CommonsWare 有一系列博客文章(大部分)解决了您问题的第 1 部分:

整个博客文章系列涵盖:

您的其他问题似乎没有任何文档(这不足为奇,因为如果有,您就不需要问这些问题了!)

于 2014-09-07T08:07:55.200 回答
1

我想有一个和你类似的问题,谷歌工程师提供了一个很好的答案,请在这里查看: 如何使用为 Lollipop 提供的新 SD-Card 访问 API?

于 2015-02-24T19:31:52.300 回答