Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e1fdf013 authored by Chirayu Desai's avatar Chirayu Desai Committed by Bruno Martins
Browse files

frameworks: Exempt location packages from location indicators

* Otherwise it gets pretty spammy

config_locationProviderPackageNames:
* Pretty obvious, location providers, e.g. GMS

config_locationExtraPackageNames:
* Pixel 6 IMS package
* https://cs.android.com/android/_/android/platform/frameworks/base/+/ffb94e69c3fc308d6d4164e2309f74442282fc84
* This grants location permissions, however we're excluding these apps from
  location indicators - they already have location permissions!
* https://cs.android.com/search?q=config_locationExtraPackageNames&sq=
* It isn't used for much else, so it's fine to re-use it for this

TODO: Figure something out for user-installed UnifiedNlp plugins

Test:
1. Open app with location access such as OrganicMaps, verify apps shown as using location
2. No more regular in background location indicators from UnifiedNlp, or Nearby

Change-Id: I395335b858a2ec8fc4879139afcdaa590523d994
parent 17b004e4
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -145,6 +145,9 @@ public final class PermissionManager {

    private List<SplitPermissionInfo> mSplitPermissionInfos;

    private static String[] mLocationProviderPkgNames;
    private static String[] mLocationExtraPkgNames;

    /**
     * Creates a new instance.
     *
@@ -159,6 +162,11 @@ public final class PermissionManager {
        mPermissionManager = IPermissionManager.Stub.asInterface(ServiceManager.getServiceOrThrow(
                "permissionmgr"));
        mLegacyPermissionManager = context.getSystemService(LegacyPermissionManager.class);

        mLocationProviderPkgNames = context.getResources().getStringArray(
                R.array.config_locationProviderPackageNames);
        mLocationExtraPkgNames = context.getResources().getStringArray(
                R.array.config_locationExtraPackageNames);
    }

    /**
@@ -946,6 +954,16 @@ public final class PermissionManager {
                pkgNames.add(exemptedPackage);
            }
        }
        for (String pkgName: mLocationProviderPkgNames) {
            if (pkgName != null) {
                pkgNames.add(pkgName);
            }
        }
        for (String pkgName: mLocationExtraPkgNames) {
            if (pkgName != null) {
                pkgNames.add(pkgName);
            }
        }
        return pkgNames;
    }