Ami*_*deh 3 java android file-permissions android-6.0-marshmallow android-storage
我正在 android 27 模拟器上进行测试并尝试遍历一些目录。
当我尝试遍历/storage/emulated目录时,该方法会在存在时listFiles()返回。null/storage/emulated/0
这是一个测试代码:
File emuDir = new File("/storage/emulated");
File[] emuDirFiles = emuDir.listFiles(); // returns null.
File exStorageDir = new File("/storage/emulated/0")
exStorageDir.exists(); // returns true
Run Code Online (Sandbox Code Playgroud)
PS我已经在清单中添加了适当的存储权限并授予了运行时权限。
简短回答: Android 不会授予您的应用访问/storage/emulated.
长答案以及您的解决方案不起作用的原因:
您授予了哪些权限?我认为它们是EXTERNAL_WRITE/EXTERNAL_READ并且这些将使您可以访问与 ./storage/emulated/0返回的目录相同的目录getExternalStorageDirectory()。Android 不授予/storage/emulated. 附带说明一下,如果File.canRead()返回,false则无法listFiles()访问该目录。在您的情况下,即使您添加了权限emuDir.canRead()也会返回false,因为这些权限授予/storage/emulated/0不访问/storage/emulated
| 归档时间: |
|
| 查看次数: |
2036 次 |
| 最近记录: |