Android 11 |范围的存储强制

Android 11 |范围的存储强制,android,android-database,android-storage,scoped-storage,Android,Android Database,Android Storage,Scoped Storage,根据文件 使用作用域存储,除非您的应用需要访问存储在应用特定目录和MediaStore API可以访问的目录之外的文件。如果将特定于应用程序的文件存储在外部存储上,则可以通过将这些文件放置在外部存储上特定于应用程序的目录中,使采用作用域存储变得更容易。这样,在启用范围存储时,应用程序可以保持对这些文件的访问 在本例中,我使用以下命令创建文本文件: File root = new File(this.getExternalFilesDir(null), "sample"); if (!ro

根据文件

使用作用域存储,除非您的应用需要访问存储在应用特定目录和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//files/sample.txt
我正在对它执行写操作

以下是查询:

  • 尽管参考了上述文档,但仍不清楚作用域存储强制是否适用于上述场景?我是否需要实现作用域存储,否则它将在没有任何更改的情况下工作,并且不会受到Android 11行为更改的影响

  • 据我所知,Android 11不会对作用域存储实施产生影响。因为我没有应用程序需要访问存储在应用程序特定目录之外的文件的用例。这种理解正确吗

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

  • 我认为你的假设是对的。我不记得在访问外部应用程序文件时遇到过安全问题。如果要从作用域存储中获取文件,请选择“是”。如果您实际使用各种扩展名被认为是“应用程序/八位字节流”的文件,那么您将度过一段糟糕的时光,甚至更糟。阅读本文,我认为您的假设是正确的。我不记得在访问外部应用程序文件时遇到过安全问题。如果要从作用域存储中获取文件,请选择“是”。如果您实际处理扩展名被识别为“application/octet stream”的各种文件,那么您的情况会很糟糕,甚至更糟
    /storage/emulated/0/Android/data/<package-name>/files/sample.txt