拍照后获取onActivityResult中的图像Uri?

我有这个代码:

startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE), CAMERA_IMAGE); 

这允许该用户拍照。 现在我如何在onActivityResult获得该照片的Uri ? 是额外的Intent吗? 是通过Intent.getData()吗?

 protected void onActivityResult(int requestCode, int resultCode, Intent intent){ Uri u = intent.getData(); } 

顺便说一句……在某些设备中存在这种意图的错误。 看看这个答案 ,知道如何解决它。

不仅要启动意图,还要确保告诉您想要照片的目的。

 Uri uri = Uri.parse("file://somewhere_that_you_choose"); Intent photoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); photoIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri); startActivityForResult(photoIntent, CAMERA_IMAGE); 

然后当你调用onActivityResult()方法时,如果它成功,只需打开一个URI的流,它应该全部设置。

 Uri uri = null; if(requestCode == GALLERY_INTENT && resultCode == RESULT_OK){ uri = data.getData(); } 
 protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { Bitmap photo = (Bitmap) data.getExtras().get("data"); Uri fileUri = Utils.getUri(getActivity(), photo); } } public String getRealPathFromURI (Uri contentUri) { String path = null; String[] proj = { MediaStore.MediaColumns.DATA }; Cursor cursor = getActivity().getContentResolver().query(contentUri, proj, null, null, null); if (cursor.moveToFirst()) { int column_index = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA); path = cursor.getString(column_index); } cursor.close(); return path; }