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"
以显示。
我有一个使用存储设备上的文件的应用程序。这在 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"
以显示。