由于某些奇怪的原因,我不断遇到不同类型的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卡中。
答案 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" />