Android 16 Photo Picker: Image remains pre-selected in "Limited Access" after app reinstall, but the app cannot access it


I'm seeing an unexpected behavior with Limited Photo Access on Android 16 (API 36).

Steps to reproduce

  1. Install an app targeting Android 16 / API 36.

  2. Use the app to create/save an image into MediaStore.

  3. Confirm that the image is visible in the system photo picker.

  4. Uninstall the app. The image remains on the device.

  5. Reinstall the same app with the same package name.

  6. Request limited access to photos (READ_MEDIA_VISUAL_USER_SELECTED).

  7. In the system "Select photos" / Limited Access picker, the image that was created by the previous installation of the app is already selected by default.

  8. Leave the image selected and tap OK/Done.

  9. Query MediaStore from the app.

Actual behavior

The image is shown as selected in the Limited Access picker, but the reinstalled app cannot access/query that image after confirming the selection.

If I understand correctly, uninstalling the app removes its existing media grants, and the image created by the previous installation should no longer be treated as owned by the newly installed instance.

However, the picker still displays the image as pre-selected. Tapping OK without changing the selection does not appear to grant access to it.

This results in an inconsistent state:

  • The Photo Picker UI indicates that the image is selected/accessible.

  • The app cannot actually access the image through MediaStore.

Expected behavior

I would expect one of the following:

  1. The image should not be pre-selected after reinstalling the app because the previous grant/ownership no longer applies; or

  2. If the image is pre-selected, tapping OK should create a valid media grant for the newly installed app so that it can access the image.

Is this expected behavior on Android 16, or is it a bug in the Limited Photo Access / Photo Picker implementation?

Also, where does the Photo Picker get the pre-selected state for this case? Is it based on MediaProvider's current media grants, app ownership information, or some other persisted state?

0
Aug 11 at 9:39 AM
User AvatarDave Brubeck
#android

No answer found for this question yet.