我想将图片存储在设备的照片目录中。我用
path = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES);
调用此方法后,在我的S3(Android 4.3)上,路径包含" / storage / emulated / 0 / Pictures"。当我尝试在此目录中创建文件时,它可以正常工作。我用
File.createTempFile(
imageFileName, ".jpg", path);
为此。 我使用Android 5.0在Galaxy S5和模拟器上进行了测试。在模拟器上,路径包含" / storage / sdcard / Pictures"。当我尝试在其中创建一个文件时,我得到一个" java.io.IOException:open failed:ENOENT(没有这样的文件或目录)"。我的模拟器启用了SD卡支持。 S5没有SD卡。也许这就是设备问题的原因。我在清单中使用了WRITE_EXTERNAL_STORAGE权限。我甚至尝试使用file.mkdirs()来确保路径存在。但这也行不通。
答案 0 :(得分:1)
我终于找到了解决方案: 在我的AndroidManifest.xml中,我使用了:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18"/>
因为doku中的这些信息:
例如,从Android 4.4(API级别19)开始,它不再是 您的应用需要WRITE_EXTERNAL_STORAGE 您的应用想要写入自己的权限 外部存储上的特定于应用程序的目录(目录 由getExternalFilesDir()提供。但是,许可是 API级别18及更低级别所需。
我误解了这样一个事实,即如果我想写入图片目录,我仍然需要此权限,即使在API&gt; 19.所以我删除了这个标签并且有效。