Android 9 到 10 更改后无法访问文件系统

Unable to access file system after Android 9 to 10 change

我有一个使用存储设备上的文件的应用程序。这在 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() 应该 return 的结果 - 但它是一个文件夹。

但是,(1) 文件没有改变,(2) 根据 Total Commander 的说法,它们肯定存在,并且 (3) 另一个具有相同存储权限的应用程序,目标 API 等,使用相同的列出(不同的)目录的代码仍然可以正常工作。

任何人都可以建议在 Android 9 和 10 之间发生了什么变化可能导致这种情况吗?

顺便说一句,我还注意到 Android Studio 不断断开与目标(Google Pixel 2)的连接,因此现在调试失败 phone 运行 10。那没用要么发生。

您确实无法访问目标 Android Q 的目录。

这就是变化。

无法再访问 getExternalStorageDirectory()。

如果您想以旧方式继续直到 R,请添加 android:requestLegacyExternalStorage="true" 以显示。