Android异常:java.io.IOException:打开失败:EACCES(权限被拒绝)

24

由于某种奇怪的原因,我在面对不同类型的Android设备时,经常遇到一个问题,即无法将捕获的图像保存到设备存储中。

这里是详细的错误日志,显示了我实际上遇到了什么问题。

java.io.IOException: open failed: EACCES (Permission denied)
at java.io.File.createNewFile(File.java:940)
at com.parkhya.pick_for_shareAflash.HomeActivity.resizeImage(HomeActivity.java:456)
at com.parkhya.pick_for_shareAflash.HomeActivity.onActivityResult(HomeActivity.java:393)
Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied)
at java.io.File.createNewFile(File.java:933)

尽管其他安卓应用例如Instagram等都能够将相机拍摄的照片保存在设备中,但我的应用却不行。请问是否有人可以提供建议,让我的应用也能将照片保存在SD卡中。


3
你是否在清单文件中添加了写入权限? - Shayan Pourvatan
2个回答

22

这可能会对你有所帮助。当我尝试在SD卡上写文件时,我遇到了同样的问题。我已经设置了所有需要的写入权限,但我使用了以下方式创建文件对象:

错误:

File myFile = new File(Environment.getExternalStorageDirectory().getAbsoluteFile()+fileName);

正确:

File myFile = new File(Environment.getExternalStorageDirectory().getAbsoluteFile(), fileName);

那意味着路径是错误的。


@Rafa Firenze。感谢您的评论。如果它解决了您的问题,请将其作为接受的答案接受,以便也能帮助其他开发人员。 - Smeet
这不是我的问题,我向你给出了积极的回答(+1)。 - Rafael Ruiz Muñoz
谢谢@Smeet,这对我很有帮助!! :) - Reshma
错误的代码需要一个分隔符:File myFile = new File(Environment.getExternalStorageDirectory().getAbsoluteFile() + "/" + fileName); - Eftekhari

0
我找到的解决方案是:

编辑模拟器 1. 转到 Android 虚拟设备管理器,然后编辑模拟器 2. 为相应的模拟器设置100 MB的SD卡,然后点击确定 3. 保存和关闭模拟器并启动 4. 点击DDMS mnt/sdcard/yourfilename以保存路径。 对我有用,应用程序没有出现错误,可以正常工作


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接