【发布时间】:2020-03-04 10:11:52
【问题描述】:
我有一个使用存储设备上文件的应用程序。这在 Android 9 上运行得非常好。其中一件事是浏览目录以获取文件列表。
我刚刚更新到 Android 10。突然之间,目录中(显然)没有文件了。然而,根据 Total Commander,实际上所有相同的文件都在那里。
代码(文件夹是设置为 /storage/emulated/0/uk.co.nightshade-arts/maps 的字符串)是
...
String []
rawFiles;
try {
File f = new File(folder);
rawFiles = f.list();
}
catch (Exception e) {
return null;
}
...
rawFiles 以 null 结束,如果路径不是文件夹,则 list() 应该返回 - 但它是一个文件夹。
但是,(1) 文件没有改变,(2) 根据 Total Commander,它们肯定存在,(3) 另一个具有相同存储权限、目标 API 等的应用程序,使用相同的代码列出一个(不同的) 目录仍然可以正常工作。
谁能提出可能导致此问题的 Android 9 和 10 之间可能发生的变化?
顺便说一句,我还注意到 Android Studio 不断与目标(Google Pixel 2)断开连接,因此现在手机运行 10 时调试失败。过去也没有发生这种情况。
【问题讨论】:
-
如果你的目标是 Android 10,存储访问框架已经发生了变化,通过一个叫做 Scoped Storage 的东西,你可以在这里查看这些变化,看看它们如何影响应用程序:: @987654321 @
-
谢谢,但实际上仍以 9 为目标,其他应用程序也是如此。不过我会看看。
-
是的,见下文。就是这样。实际上这个应用错误地针对 API 29,而不是 28,另一个针对 28。所以另一个没问题,这不是。
标签: android android-file