問題描述:
take photo -> 拍照 -> 確定 -> 截圖 -> 保存,此時返回給onActivityResult的resultCode是0,截圖無效。我查看圖片儲存的情況,拍完照是有存儲好的,但截圖后沒有存儲,圖片變成了0byte。
原因:
private void cropImageUri(Uri uri, int requestCode){
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
intent.putExtra("crop", "true");
intent.putExtra("aspectX", aspectX);
intent.putExtra("aspectY", aspectY);
intent.putExtra("outputX", outputX);
intent.putExtra("outputY", outputY);
intent.putExtra("scale", true);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
intent.putExtra("return-data", false);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("noFaceDetection", true); // no face detection
startActivityForResult(intent, requestCode);
}
裁減時打開圖片的uri與保存圖片的uri相同,產生沖突,導致裁減完成后圖片的大小變成0Byte。
解決辦法:
法一:可將相機照片保存在另外的位置,將intent.setDataAndType(uri, "image/*");中的uri換成相機照片倮存的路徑即可。
法二:將intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);中的uri換成裁剪后要保存的路徑即可。
總結:總之,就是intent.setDataAndType(uri, "image/*");和intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);中uri的地址必須是不同的。