Is there any way to store full size image returned

2020-02-10 06:06发布

问题:

I am using

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(externalFileObj));

intent to call default camera activity. To get full image you need to specify intent.putExtra(). But this always requires URI that works only for external storage files.

I tried to create a temp.jpg image in internal memory and pass its URI

Uri.fromFile(new File(getFilesDir() + "/temp.jpg"));

but the camera activity won't return back after the image is captured.

So there is no way to get Full size image from default camera application in our activity without using any external storage ? Assuming that the device do not have SD card or currently in use is there no way I can avoid using it ?

Yes I know we can create our own camerapreview surface but I want to use the default camera application as it is natural with many more options.

Thanks.

回答1:

Ah! I got it. Your files directory in internal memory is private by default and is not writable by external apps (e.g. Camera app is external app)

Just create a new directory in writable mode in your application space (internal memory) and pass this URI to the camera Activity. And everything works fine. No need of external storage to be present at all. Tested and works fine.



回答2:

I have just used code like the following:

mTempFilePath = File.createTempFile("myappprefix_", "");
i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mTempFilePath));

Is there some reason it has to be in internal storage? I'd expect that only phones like the HTC Incredible (which has internal photo storage) would be able to explicitly store photos on internal.