【背景】
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.参考:
去:
AndroidManifest.xml
中加上:
变成:<?xml version="1.0" encoding="utf-8"?>
package="com.mm.xxx"
android:versionCode="1"
android:versionName="1.0" >
android:minSdkVersion="16"
android:targetSdkVersion="17" />
android:name="com.mm.xxx"
android:allowBackup="true"
......
即可。
2.关于这个,之前在:
也是接触过,也知道的。
很明显,除了可以手动修改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)中,添加上对应的:
即可。