Android-Android4.0不能在SD卡创建目录?
问一下,4.0不能在SD卡下创建目录吗?为什么我权限有了,还是无法创建然后报错?
是权限不对吗?
报错如下:
08-24 16:51:42.045: W/System.err(3144): java.io.IOException: open failed: EACCES (Permission denied)
08-24 16:51:42.045: W/System.err(3144): at java.io.File.createNewFile(File.java:940)
08-24 16:51:42.045: W/System.err(3144): at qinXianYuZou.Qian.Shuju.chuangjianku_xie(Shuju.java:166)
08-24 16:51:42.045: W/System.err(3144): at qinXianYuZou.Qian.QianMingActivity$click_签名按钮.onClick(QianMingActivity.java:114)
08-24 16:51:42.045: W/System.err(3144): at android.view.View.performClick(View.java:3511)
08-24 16:51:42.055: W/System.err(3144): at android.view.View$PerformClick.run(View.java:14109)
08-24 16:51:42.055: W/System.err(3144): at android.os.Handler.handleCallback(Handler.java:605)
08-24 16:51:42.055: W/System.err(3144): at android.os.Handler.dispatchMessage(Handler.java:92)
08-24 16:51:42.055: W/System.err(3144): at android.os.Looper.loop(Looper.java:137)
08-24 16:51:42.055: W/System.err(3144): at android.app.ActivityThread.main(ActivityThread.java:4424)
08-24 16:51:42.065: W/System.err(3144): at java.lang.reflect.Method.invokeNative(Native Method)
08-24 16:51:42.065: W/System.err(3144): at java.lang.reflect.Method.invoke(Method.java:511)
08-24 16:51:42.065: W/System.err(3144): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-24 16:51:42.065: W/System.err(3144): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-24 16:51:42.065: W/System.err(3144): at dalvik.system.NativeStart.main(Native Method)
08-24 16:51:42.075: W/System.err(3144): Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied)
08-24 16:51:42.075: W/System.err(3144): at libcore.io.Posix.open(Native Method)
08-24 16:51:42.075: W/System.err(3144): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
08-24 16:51:42.075: W/System.err(3144): at java.io.File.createNewFile(File.java:933)
08-24 16:51:42.075: W/System.err(3144): ... 13 more
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我怎么觉得那个path.mkdirs()应该是path.mkdir(),不妨试一下
上面的代码没有啥问题,是不是兼容存在问题,在其他的sdk,手机上测试可以吗?手机确定没有mount的状态
可以用下面的代码调试下:
public void writeToExternalStoragePublic(String filename, int content) {
String packageName = this.getPackageName();
String path = Environment.getExternalStorageDirectory().getAbsolutePath()+ "/Android/data/" + packageName + "/files/";
if (isExternalStorageAvailable() && !isExternalStorageReadOnly()) {
try {
boolean exists = (new File(path)).exists();
if (!exists) {
new File(path).mkdirs();
}
// Open output stream
FileOutputStream fOut = new FileOutputStream(path + filename,true);
// write integers as separated ascii's
fOut.write((Integer.valueOf(content).toString() + " ").getBytes());
fOut.write((Integer.valueOf(content).toString() + " ").getBytes());
// Close output stream
fOut.flush();
fOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
当应用程序是system时,不能访问SDCARD