4.4系統,拍照-裁剪,resultCode返回0


問題描述:

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的地址必須是不同的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM