1

根据文档

使用范围存储,除非您的应用需要访问存储在应用特定目录之外以及 MediaStore API 可以访问的目录之外的文件。如果您将特定于应用程序的文件存储在外部存储上,则可以通过将这些文件放置在外部存储上的特定于应用程序的目录中来更轻松地采用范围存储。这样,您的应用程序在启用范围存储时保持对这些文件的访问。

就我而言,我正在使用以下内容创建一个文本文件:

File root = new File(this.getExternalFilesDir(null), "sample");
    if (!root.exists()) {
        root.mkdirs();
    }
File file = new File(root, "sample.txt");

上面是在以下位置创建一个文件(虽然没有可用的 SD 卡):

/storage/emulated/0/Android/data/<package-name>/files/sample.txt

我正在对它进行写入操作。

以下是查询:

  1. 在参考上述文件时,仍然不清楚 Scoped 存储强制是否适用于上述场景?我是否需要实现 Scoped Storage 或者它会在没有任何更改的情况下工作,并且不会受到 Android 11 行为更改的影响。

  2. 根据我的理解,由于 Android 11,Scoped 存储强制执行没有任何影响。因为我没有应用程序需要访问存储在应用程序特定目录之外的文件的用例。这种理解正确吗?

  3. 如果我想读取位于 Downloads 文件夹下的文件,我需要实现 Scoped Storage,因为我的应用程序想要访问存储在应用程序特定目录之外的文件。这种理解正确吗?
4

1 回答 1

0

您绝对可以使用 File API 创建和访问 /storage/emulated/0/Android/data/ 中的文件。据我所知,这些位置没有变化。我已经做了。

要访问下载中的文件,是的,我读过的内容需要范围存储。我没有对此进行测试,但文档很清楚这是 Android 11 中的法律。这是一个糟糕的法律,但仍然是法律。

于 2021-10-03T01:49:13.597 回答