I really wish mobile OSes would allow you to grant apps permissions but serve fake data, (that's important!) without giving the app the ability to tell the difference. Just so it appears to the app that you've given the permission, when you in fact have not. This would solve this entire class of problems and then some. So, for example: - App "has" access to contacts, but the system returns that you have none. - App "…
Haven't done in-depth Android development, but I believe there is option to fake some GPS data? Ofcourse, not that helpful if you want 1 app to have real data, the other... not so real.
Proper way would be force devs think about REQUIRED and OPTIONAL permissions you can give. REQUIRED permissions are given on launch (or maybe you just get useless app), OPTIONAL permissions for improved features and fails gracefully if not given. It currently works that way, but is up to developer to implement it that way.
Perhaps adding advantage to those apps that do not REQUIRE sensitive permissions. Say a filter in Play Store you can use to filter our apps that require X permissions to work. In some cases, devs would be incentivized to REQUIRE less permissions.
When writing this comment, I thought about another solution. User profiles on android. Like on browser, where you get your own cookies etc. Googled around and.. looks like Android has something to offer!? Doesn't solve location, but perhaps Storage/Contacts.
https://source.android.com/devices/tech/admin/multi-user
https://support.google.com/nexus/answer/2865483?hl=en
> Notifications appear for all accounts of a single user at once.
> Notifications for other users do not appear until active. Each user gets a workspace to install and place apps.
> No user has access to the app data of another user.
> Any user can affect the installed apps for all users.
> The primary user can remove apps or even the entire workspace established by secondary users.