我遇到与Media.insertImage方法 https://developer.android.com/reference/android/provider/MediaStore.Images.Media.html#insertImage(android.content.ContentResolver,%20android.graphics.Bitmap,%20java.lang.String,%20java.lang.String)的Android - MediaStore.Images.Media.insertImage - 无法创建文件
private Uri createTemporaryUri(Bitmap bitmap)
{
fixMediaDirForKitkat();
String savedPath = MediaStore.Images.Media.insertImage(requestTarget.getMyFragment().getActivity().getContentResolver(), bitmap, "someone_tmp", null);
return Uri.parse(savedPath);
}
private void fixMediaDirForKitkat()
{
File sdcard = Environment.getExternalStorageDirectory();
if(sdcard != null) {
File mediaDir = new File(sdcard, "DCIM/Camera");
if(!mediaDir.exists()) {
mediaDir.mkdirs();
}
}
}
对于一些奇巧设备(4.4 - 4.4.4)一些奇怪的问题如果不使用方法fixMediaDirForKitkat,insertImage函数有时会返回null。添加方法后,我遇到:
Caused by java.lang.IllegalStateException: Unable to create new file: /storage/sdcard0/DCIM/Camera/1480524677437.jpg
android.provider.MediaStore$Images$Media.insertImage (MediaStore.java:1008)
some.one.PhotoUploader.createTemporaryUri (PhotoUploader.java:166)
some.one.PhotoUploader.beginImageUpload (PhotoUploader.java:145)
some.one.registration.RegisterFragment.onActivityResult (RegisterFragment.java:107)
难道什么都需要进行初始化?这里有任何黑客攻击或解决方法吗?设备没有SD卡/空间?无法创建新的文件告诉我任何事情。;-)
任何建议高度赞赏
嗨忍者,谢谢你的回答。所有关于您提及的权限的事情都已经实现并且正常工作(同时测试了API下面和上面的23)。问题仅在使用KITKAT的某些设备上发生。 – Jacek
@Jacek如果它有帮助,然后请投票,因为有人得到帮助 – Ninja
@Jacek - 我面临同样的问题,你会分享你如何解决这个问题吗?谢谢 –