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

时间:2014-01-18 05:31:01

标签: android permissions camera ioexception denied

由于某些奇怪的原因,我不断遇到不同类型的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)

虽然,所有其他Android应用程序,如Instagram和其他人,都可以保存设备上的相机点击图像。 任何人,你能否建议,为了我的应用程序,我应该怎么做,将相机图片保存在SD卡中。

4 个答案:

答案 0 :(得分:22)

请添加允许应用程序写入外部存储空间的权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

允许应用程序从外部存储中读取。

任何声明WRITE_EXTERNAL_STORAGE权限的应用都会被隐式授予此权限。

此权限从API级别19开始强制执行。在API级别19之前,不会强制执行此权限,并且所有应用程序仍有权从外部存储读取。您可以通过在运行Android 4.1或更高版本的设备上的“设置”应用中的“开发者”选项下启用“保护USB存储”来强制执行权限来测试您的应用。

答案 1 :(得分:21)

这可能会对你有所帮助。在sdcard上写文件时我遇到同样的问题。我已经设置了写入文件所需的所有权限,但我使用了如下文件对象:

错:

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

正确:

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

这意味着路径错了。

答案 2 :(得分:0)

我找到的解决方案是

编辑模拟器 1.转到android虚拟设备管理器,然后编辑模拟器 2.为尊重的模拟器设置为100 MB的Sd卡并说出确定 3.保存并关闭模拟器并启动 4.保存的路径是单击DDMS mnt / sdcard / yourfilename 它适用于我的应用程序没有给出错误并正在工作

答案 3 :(得分:-9)

请注意以下陷阱:其他人写了

<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
AndroidManifest.xml中的

。 我想保存文件并添加提到的行并获得

<uses-permission android:name="android.permission.INTERNET" >
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</uses-permission>

这是错误的语法。它应该是

<uses-permission android:name="android.permission.INTERNET" >
</uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />