onActivityResult returns null data for an Image Capture

Archie.bpgc picture Archie.bpgc · Jul 24, 2013 · Viewed 10.9k times · Source
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    filePath = getOutputMediaFile(FileColumns.MEDIA_TYPE_IMAGE);
    File file = new File(filePath);
    Uri output = Uri.fromFile(file);
    Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    i.putExtra(MediaStore.EXTRA_OUTPUT, output);
    startActivityForResult(i, RETURN_FILE_PATH);
}

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    //data is always null here.
    //requestCode = RETURN_FILE_PATH;
    //resultCode = Activity.RESULT_OK;
}

I checked the values for file and output Uri, both are fine and the captured image actually exists at that location.

But the data returned in onActivityResult is always null even after capturing the image.

EDIT:

I checked this question:

onActivityResult returns with data = null

which says:

Whenever you save an image by passing EXTRAOUTPUT with camera intent the data parameter inside the onActivityResult always return null. So, instead of using data to retrieve the image , use the filepath to retrieve the Bitmap.

and maybe that solution will work for me. But the above code of mine was a working code until now for the same scenario.

Answer

alex picture alex · Jul 24, 2013

According to this post data is null when you pre insert a uri. That means you already defined your output uri here:

  i.putExtra(MediaStore.EXTRA_OUTPUT, output);

So when you get a Activity.RESULT_OK; just load the taken photo by its known url.