The location notification icon in the status bar is designed only to show when an app is accessing the GPS (a.k.a. high powered location); however, this is broken on some devices where the icon is shown all the time, whether or not there is actually an app requesting high powered location. This Xposed module makes sure that the location icon shows up only when it should.
Should work on Android 5.0+.
(As a side benefit, you can check the Xposed log for which packages had accessed or are still accessing high powered location ).
Get it in the Xposed repo:
Source code URL:
Some technical details of the fix:
The fix, without figuring out where those AppOps requests come from (they seem to come from close source Google services), is to keep track of the intent sent from LocationManagerService without invoking AppOps; to do that, I modified the intent sending code to send also package name and the on/off status. The side effect is that the android.location.HIGH_POWER_REQUEST_CHANGE broadcast is now sent twice, once without and once with the extra information. This side effect can easily be fixed by changing the intent action, but no other packages seem to use it (and it is a system level broadcast, so no user app should be using it).