Ok, so I relayed info to the app developer and they were quite helpful in providing insight, although we still don't know why it isn't working.
The following is his response.
hi,
that's a tricky one.
a) i've only ever seen this type of error if any of the Android System settings say "you cannot use 'Location'". on my Pixel 6 that's the system settings toggle "Location / Use location".
b) what likely makes things more complicated: my app is executing the location lookup in a service; while this is marked as "ForegroundService", it technically still runs in the background. Graphene OS might consider this a "location access in the background" when triggered via my app's notifications or widgets, and therefore block it based on additional security features.
c) that other issue (you get geo coordinates but not address names from within the app): cannot pinpoint this neither. most likely explanation: the call to the google "address lookup" is blocked (this is wrapped in google libraries, but ultimately they do look it up at runtime via webservice call against their servers)
so, long story short, i cannot tell you why this happens.
also, just in case, these are the library calls i'm using; with "cannot obtain current location" both A and B fail, address name lookup is item C.
i.e. this is pretty much "standard google services for geo lookup", as provided by com.google.android.gms:play-services-location (i'm at the latest version 21.0.1)
** A) try to get current location **
-- com.google.android.gms.location.LocationSettingsRequest, com.google.android.gms.location.SettingsClient
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
SettingsClient client = LocationServices.getSettingsClient(context);
Task<LocationSettingsResponse> task = client.checkLocationSettings(builder.build());
** B) fallback: try to get the cached "last known location" **
-- com.google.android.gms.location.FusedLocationProviderClient
Task<Location> task = client.getLastLocation();
** C) address lookup
-- android.location.Geocoder
Geocoder geocoder = new Geocoder(context, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), GeoLocationManager.MAX_RESULT_SIZE);
regards