【发布时间】:2020-07-07 00:57:41
【问题描述】:
根据文档
使用范围存储,除非您的应用需要访问存储在应用特定目录之外以及 MediaStore API 可以访问的目录之外的文件。如果您将特定于应用程序的文件存储在外部存储上,则可以通过将这些文件放置在外部存储上的特定于应用程序的目录中来更轻松地采用范围存储。这样一来,您的应用在启用范围存储时保持对这些文件的访问。
在我的情况下,我正在使用以下方法创建一个文本文件:
File root = new File(this.getExternalFilesDir(null), "sample");
if (!root.exists()) {
root.mkdirs();
}
File file = new File(root, "sample.txt");
Above 正在以下位置创建文件(但没有可用的 SD 卡):
/storage/emulated/0/Android/data/<package-name>/files/sample.txt
我正在对其进行写入操作。
以下是查询:
在参考上述文档时,如果 Scoped 存储强制适用于上述场景,是否仍不明确?我是否需要实现 Scoped Storage 或者它会在没有任何更改的情况下工作并且不会受到 Android 11 行为更改的影响。
据我了解,由于 Android 11,Scoped 存储强制实施没有任何影响。因为我没有应用需要访问存储在应用特定目录之外的文件的用例。这种理解正确吗?
- 如果我想读取位于 Downloads 文件夹下的文件,我需要实现 Scoped Storage,因为我的应用程序想要访问存储在应用程序特定目录之外的文件。这种理解正确吗?
【问题讨论】:
-
我认为您的假设是正确的。而且我不记得在访问外部应用程序文件时遇到安全问题。是的,如果您想从 Scoped 存储中获取文件。如果您实际使用扩展名被识别为“application/octet-stream”的各种文件,您将度过一段糟糕的时光,甚至更糟。
标签: android android-database android-storage scoped-storage