After updating an app recently on my CyanogenMod based Android device that requires GPS information I was surprised and admittedly also a bit annoyed that it wouldn't access the GPS receiver anymore. When looking at the release notes I saw that the app changed from Android's legacy GPS API to the Google Play GPS API but still offered an option in the settings to change back to the legacy API. And indeed, after switching to the legacy API everything worked again. But why wouldn't the Google Play location API work on my device?
It took me a while to figure it out but I finally realized that half a year ago I activated CyanogenMod's Privacy Guard features for the Google Play services app as at the time I had no idea what the app that appears in the app overview actually does and thus saw no need to let it have access to my private data. As it kept asking for permissions I set Privacy Guard to just block requests without user notifications. And since I use alternatives to most Google apps I haven't had a problem with that setting until today.
On the left are two screenshots that show CyanogenMod's Privacy Guard in action. The first one shows the check box to activate the protection mechanism on a per app basis. The second screenshot shows the top of the list of access permissions that can be granted on a per app basis either always, on request or never.
So while my experience was a bit unpleasant, the positive side is that is showed that Privacy Guard does what it is supposed to do.