我遇到與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 - 我面臨同樣的問題,你會分享你如何解決這個問題嗎?謝謝 –