iOS almost allows this for geo-location nowadays, where one can pick whether to give ones exact position or a much less exact position, and for photos where one can select exactly what photos the app should get access to.
Does android have this API? The problem I see is, if they are introduced in later versions, people are anyway used to apps asking these permissions and developers don't bother to use these.
Also, a question to security experts: In many apps say we want a UX where the user would immediately be able to see their recent pics and select from them (think recent photos bar in whatsapp), but app shouldn't be able to access them. Is it safe if OS provides it as a screen overlay service which doesn't require a separate screen/window, but runs out of process (a la file picker).
Android has a better API, and has had it for at least 5 years. An app can open the system UI for you to choose a file, and it would then only get access to that particular file while the activity (screen) that requested it is running. As far as the user is concerned, this requires no permissions. Under the hood, the app gets a content:// URI with an "URI permission" granted. This is also how sharing (Intent.ACTION_SEND) works. You could as well use this mechanism to expose the content in your app to other apps in a controlled manner.
I wish there was an easier way to add additional photos quickly. From what I understand the only way is search for the app in settings, open the "Photos" permission and click on "Edit Selected Photos". Is there an easier way I missed? I guess I can't expect a simple click from within the app itself while selecting photos, as it's not aware it's seeing a limited selection.
I think it requires developers to fix that. At least in Slack there's two buttons next to their in-app image picker. One opens the camera to take a photo, the other pops up the iOS photo picker overlay where you can select more images.