Here we go again. Users desperately need an abstraction layer in Android that can spoof sensor data on a per-application basis. In this case, the spoofing layer could be set up such that whenever Google Maps uses the Android API to ask "Is wifi location sensing turned on" the spoofing layer would say "Yes." When GM asks "What wifi networks are around?" the spoofing layer would say "None." (Even better would be for it to just make up a bunch of random wifi SSIDs to pollute Google's wifi database with noise.)

I have several other apps (Twitter for example) who are able to tell that I have notifications for them turned off, and consequently they bug me to turn on notifications. I need a spoofing layer that tells Twitter "notifications are turned on" even when they're off, because if the app can tell some feature is turned off it will bug me or in some cases fail to work at all. So it's also critically important that there be no way for applications to figure out that the spoofing layer is in place.

big yes to this.

whenever an app asks for a permission i want these options:

    allow
    deny
    pretend allow but send empty responses (like no wifi found)
    pretend allow but send fake responses

this was supported with Xprivacy many years ago and it was fantastic, but it stopped getting support. The entire pro-privacy android scene seems to have become a very small niche over the years

That's mainly googles fault. Xposed still lives on somewhat with the Riru project, but even a rooted phone without any mods will fail securitynet checks today, rendering it useless for most consumers that would have been willing to do the process before. With every android version things become less modular and less moddable, so the community shrinks as a consequence.

It's still possible to use XPrivacyLua (https://github.com/M66B/XPrivacyLua) with passing SafetyNet. It's a cat-and-mouse game, but the community is still ahead.

You can achieve this with latest Magisk (v24+, https://github.com/topjohnwu/Magisk), enabled Zygisk and following modules:

- LSposed Zygisk (https://github.com/LSPosed/LSPosed, fork of Xposed)

- Universal SafetyNet Fix (https://github.com/kdrag0n/safetynet-fix)

- Shamiko [optional, more hiding but needs configuration] (https://github.com/LSPosed/LSPosed.github.io)