我有应用程序,它应该从外部存储器中读取文件列表:
<code>
File x = Environment.getExtrernalStorageDirectory();
System.out.println(x.getAbsolutePath());
File[] files = x.listFiles();
</code>
作为输出我得到:
<code>
/storage/emulated/0
fail readDirectory() errno=13
</code>
我使用来自here的isExternalStorageWritable和isExternalStorageReadable,它们都返回true。
我的平板电脑没有root,但它处于开发者模式。我应该首先以某种方式设置目录吗?
也许WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE的权限不够?
当我使用Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) - ofc时,同样的事情。然后输出包含/ storage / emulated / 0 / Download
答案 0 :(得分:2)
我今天遇到过类似的问题。我注意到我的清单包含android:maxSdkVersion =“18”属性。
例如:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
通过删除它已解决。希望这对其他人也有帮助..
答案 1 :(得分:0)
试试这个:
String root_sd_path = Environment.getExternalStorageDirectory().toString();
file = new File( root_sd_path + "/" ) ;
File list[] = file.listFiles();
答案 2 :(得分:0)
我今天遇到了同样的问题。问题出在我的清单文件中。我不小心将<uses-permissions>
标记放在<application>
标记内。
答案 3 :(得分:0)
我遇到了这个问题,但在我的情况下,我没有将权限代码放在AndroidManifest.xml上,当我这样做时,我的应用运行没有任何错误。