diff --git a/api/system-current.txt b/api/system-current.txt index d0d5848b142bd..bae7f8228c839 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -3404,7 +3404,7 @@ package android.location { method public boolean isExtraLocationControllerPackageEnabled(); method public boolean isLocationEnabledForUser(@NonNull android.os.UserHandle); method public boolean isProviderEnabledForUser(@NonNull String, @NonNull android.os.UserHandle); - method public boolean isProviderPackage(@NonNull String); + method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public boolean isProviderPackage(@NonNull String); method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean registerGnssBatchedLocationCallback(long, boolean, @NonNull android.location.BatchedLocationCallback, @Nullable android.os.Handler); method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull android.location.LocationRequest, @NonNull android.location.LocationListener, @Nullable android.os.Looper); method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull android.location.LocationRequest, @NonNull android.app.PendingIntent); diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java index 7a17505efa07b..55ed8c5087685 100644 --- a/location/java/android/location/LocationManager.java +++ b/location/java/android/location/LocationManager.java @@ -2314,6 +2314,7 @@ public class LocationManager { * @hide */ @SystemApi + @RequiresPermission(Manifest.permission.READ_DEVICE_CONFIG) public boolean isProviderPackage(@NonNull String packageName) { try { return mService.isProviderPackage(packageName); diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java index d52fe81703583..94c1fa66fe9e6 100644 --- a/services/core/java/com/android/server/LocationManagerService.java +++ b/services/core/java/com/android/server/LocationManagerService.java @@ -3071,6 +3071,8 @@ public class LocationManagerService extends ILocationManager.Stub { @Override public boolean isProviderPackage(String packageName) { + mContext.enforceCallingOrSelfPermission(Manifest.permission.READ_DEVICE_CONFIG, + Manifest.permission.READ_DEVICE_CONFIG + " permission required"); synchronized (mLock) { for (LocationProvider provider : mProviders) { if (provider.getPackagesLocked().contains(packageName)) {