Pick an image, view it, copy it and get full access to it without SAF and/or storage permissions on Android 11+

Pick an image via ActivityStarter and display it with Picasso (without READ permission) on all Android versions. On Android 11+, the image can then be copied to the Shared folder /Pictures using its contentUri, granting full access to it via the app. The new (copied) image can then be edited/compressed as desired, without (storage) permissions.

On Android < 11, WRITE_EXTERNAL_STORAGE permission is of course required for this. Access must then be done via the real path (i.e., not via contentUri).

In this way, READ_EXTERNAL_STORAGE and READ_MEDIA_IMAGES (from Android 13 onwards) and SAF can be avoided (on Android 11+). In addition, READ_MEDIA_IMAGES is no longer permitted without special permission from Google since May 2025. See also my guide Some Basics on Android Storage.

Blocks

imagePicker.aia (357.7 KB)

Credit to Sunny (@vknow360) for his great Picasso extension.


Tested on Android 16, 13, 8 and 7 (Compnion & APK).

I'm curious if I missed anything, so please test it and give feedback, especially if it works with @TIMAI2's (modified) ImageConverter extension.

5 Likes

Note:
I used the File component (as a dummy) to declare WRITE permission in the Manifest. In the next update, I will ensure that WRITE_EXTERNAL_STORAGE is automatically declared in the Manifest (on Android < 11) without having to use the File component.

Great! You've created a solution that countless users have struggled with for months /years!

1 Like