我有下一个情况:Android 4.1,设备没有外部SD卡。以下代码:
File dir = new File( Environment.getExternalStorageDirectory() );
返回
的 /存储/ sdcard0
然后我尝试在那里创建一个文件并收到错误 java.io.IOException:open failed:EACCES(Permission denied)。
我的应用程序有必要的行它的清单:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
为了解决这个问题,我启动了adb并获得了文件列表,这是片段:
lrwxrwxrwx root root 2000-01-01 03:12 sdcard - &gt; /存储/ sdcard0
lrwxrwxrwx root root 2000-01-01 03:12 sdcard2 - &gt; /存储/ sdcard1
d - xr-xr-x system sdcard_r 2000-01-01 03:12存储
我无权访问 / storage / sdcard0 ,但我可以访问 / storage / sdcard1 有dirs:
ABBYY
报警
Android的
书籍
CheetahBrowser
DCIM
下载
SlideIT
等
似乎 getExternalStorageDirectory()仅仅运行不好。由于其他应用程序可以在正确的位置写入文件,这似乎很奇怪。我做错了什么?
更新
getExternalStorageState()返回“已删除”
我忽略了getExternalStorageDirectory()的结果并手动设置路径为“/ storage / sdcard1”然后一切正常,我可以创建目录和文件。
答案 0 :(得分:1)
我已经解决了这个问题,这是一个充满异国情调的问题。开头的设备有一个外部SD卡,这张卡是“默认内存”。然后SD卡已被删除,但默认内存尚未切换到内置“内置”存储。结果系统返回了不正确的存储路径,直到我更正了“默认存储器”设置并且问题消失了。