[Android Apps and Games] Aqq123:
Thank you for the heads-up.

1. The problem with some apps not registering for FCM notifications is now solved. The notifications work correctly. Great work by the developer! (I observed this issue earlier with the N26 app.)

2. Seems a new priv-app permission is necessary: UPDATE_APP_OPS_STATS in /system/etc/permissions/privapp-permissions-com.google.android.gms.xml:

<permissions>
<privapp-permissions package="com.google.android.gms">
<permission name="android.permission.UPDATE_APP_OPS_STATS" />

3. Maybe it's because I was updating from a "dirty" version and ran into some issues but MicroG didn't get the background location permission automatically, and it also couldn't be granted from the UI (either in-app or in the Settings). I had to manually add it in /data/system/users/0/runtime-permissions.xml:

<pkg name="com.google.android.gms">
<item name="android.permission.ACCESS_BACKGROUND_LOCATION" granted="true" flags="3320" />

Note that the flags="..." attribute was important: if set to "0", the Permission Manager would just silently reset it to granted="false". I put "30a0" initially, which seemed like the best guess based on the other entries:

fgrep ACCESS_BACKGROUND_LOCATION /data/system/users/0/runtime-permissions.xml | fgrep true | cut -d" -f6 | sort | uniq -c | sort -nr

3 30a0
2 b80
2 3030
1 b00
1 3320
1 2180
1 2100

And it worked although the Package Manager changed it to "3320" so if anybody else has to do it like that, this is what I'd recommend trying first.

4. Separately, due to another issue I ran into while upgrading (it shouldn't have happened otherwise), all installed apps that declared the com.google.android.c2dm.permission.RECEIVE permissions lost them and were crashing on startup:

W ActivityManager: Permission Denial: Accessing service com.google.android.gms/org.microg.gms.gcm.PushRegisterService from pid=7705, uid=10151 requires com.google.android.c2dm.permission.RECEIVE

E AndroidRuntime: FATAL EXCEPTION: firebase-iid-executor

E AndroidRuntime: Process: <package name>, PID: <process ID>

E AndroidRuntime: java.lang.SecurityException: Not allowed to bind to service Intent { act=com.google.android.c2dm.intent.REGISTER pkg=com.google.android.gms }

For some apps this can be fixed by editing /data/system/packages.xml and adding:

<package name="...
<perms>
<item name="com.google.android.c2dm.permission.RECEIVE" granted="true" flags="0" />

<shared-user name="...
<perms>
<item name="com.google.android.c2dm.permission.RECEIVE" granted="true" flags="0" />

The fix didn't work entirely though. For some other apps (and that includes Google Maps), even though they were no longer crashing on startup, they were unable to access location, despite being granted the permission.

I also tried looking at the AndroidManifest.xml in each of these apps and adding extra permissions like com.google.android.providers.gsf.permission.READ_GSERVICES and com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE even though they shouldn't really be necessary, but in the end I just reinstalled them.

Now that I compare the automatically-updated packages.xml and runtime-permissions.xml to the changes I made manually, I can't see why Google Maps wouldn't be able to get location with my manual fixes, so the reason must have clearly been elsewhere beyond these files, where I didn't look.

Maybe what I wrote above helps. In short: MicroG background location works, but maybe needs a manual fix, and Google Maps might have to be reinstalled. (Android 10, current LOS 17.1, Google Maps 10.25.3 - I think this was the last non-beta version without the nag to update Google services.)