I need to let the user take a picture (from the gallery or from a camera app) with Android 6.0.
Because I don't need to control the camera, I wanted to use an intent as describe here:
However, if you don't need such control, you can just use an ACTION_IMAGE_CAPTURE intent to request an image. When you start the intent, the user is prompted to choose a camera app (if there isn't already a default camera app), and that app takes the picture. The camera app returns the picture to your app's onActivityResult() method.
https://developer.android.com/preview/features/runtime-permissions.html
But for this ACTION_IMAGE_CAPTURE, you need to fill the extra "MediaStore.EXTRA_OUTPUT" which is an Uri to a temp file (without this param I will have only a thumbnail). This temp file must be into the external storage (to be accessible by the camera app). You need the permission WRITE_EXTERNAL_STORAGE to create a file on the external storage.
So it's not possible to capture an image through native dialogs/apps without the permission android.permission.CAMERA or android.permission.WRITE_EXTERNAL_STORAGE. Is that correct?
Thanks
It is possible if you on android 4.4+, you can specify MediaStore.EXTRA_OUTPUT, to be a file under your package-specific directories
https://source.android.com/devices/storage/
Since the camera app cannot access to the private dirs of your app, It's your applications duty to write the photo file to that directory. I'm not really sure about this but this works for me:
But you still need
WRITE_EXTERNAL_STORAGE
permission before KITKAT:Try this:
This gives you access to an "external" storage writable for camera apps in this case, but the files are just visible from your app. To learn a little bit more about storage spaces in android see https://www.youtube.com/watch?v=C28pvd2plBA
Hope it helps you!
This is possible without either of the
CAMERA
andWRITE_EXTERNAL_STORAGE
permissions.You can create a temporary in your app's cache directory, and give other apps access to it. That makes the file writeable by the camera app:
Now you just need to pass this file as the output file for the camera intent:
Note: the file Uri won't be passed to you in the Activity result, you'll have to keep a reference to the tempFile and retrieve it from there.