【背景】
android程序中,相关代码:
writeFileSdcard("/mnt/sdcard/preprocessedfile",sBuilder.toString()); public void writeFileSdcard(String fileName,String message){ try{ //FileOutputStream fout = openFileOutput(fileName, MODE_PRIVATE); FileOutputStream fout = new FileOutputStream(fileName); byte [] bytes = message.getBytes(); fout.write(bytes); fout.close(); } catch(Exception e){ e.printStackTrace(); } }
结果出现异常了,执行到了:
catch(Exception e)
对应的出错log:
10-28 15:54:55.509: W/System.err(1595): Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied) 10-28 15:54:55.509: W/System.err(1595): at libcore.io.Posix.open(Native Method) 10-28 15:54:55.509: W/System.err(1595): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110) 10-28 15:54:55.509: W/System.err(1595): at libcore.io.IoBridge.open(IoBridge.java:400) 10-28 15:54:55.509: W/System.err(1595): ... 13 more
即:
Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied) |
【解决过程】
1.参考:
Permission denied when writting into sdCard
去:
AndroidManifest.xml
中加上:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
变成:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mm.xxx" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:name="com.mm.xxx" android:allowBackup="true" ...... </application> </manifest>
即可。
2.关于这个,之前在:
【貌似已彻底解决】ADT中使用DDMS导入文件再次出现transfer error: Read-only file system
也是接触过,也知道的。
很明显,除了可以手动修改xml加上WRITE_EXTERNAL_STORAGE,也是可以通过
在Permission窗口中,通过图形界面,去添加对应的:
android.permission.WRITE_EXTERNAL_STORAGE
的:
【总结】
此处,android中,用代码中操作外部sd卡,结果出错:
Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied) |
原因是:
没有权限操作外部sd卡。
解决办法:
给用户添加操作外部sd卡的权限:
给manifest文件(AndroidManifest.xml)中,添加上对应的:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
即可。
转载请注明:在路上 » 【已解决】android中代码操作外部SD卡出错:W/System.err(1595): Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied)