From b983a450d00e72935bf08e64f8611015d2a5aa4a Mon Sep 17 00:00:00 2001 From: David Christie Date: Thu, 1 Dec 2022 11:33:49 -0800 Subject: Add permission gated provider to access the hardware GPS directly. -Only applicable when an app level GPS provider override is present which may mask the hardware provider. Bug: 260010264 Test: atest LocationManagerServiceTest, atest LocationProviderManagerTest Change-Id: I085152f9074863dcf8d8ee96981846b847966018 --- location/java/android/location/LocationManager.java | 15 +++++++++++++++ .../android/location/provider/LocationProviderBase.java | 2 -- 2 files changed, 15 insertions(+), 2 deletions(-) (limited to 'location/java') diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java index 9b81c09f5c5b..3619d3ac5253 100644 --- a/location/java/android/location/LocationManager.java +++ b/location/java/android/location/LocationManager.java @@ -194,6 +194,21 @@ public class LocationManager { */ public static final String GPS_PROVIDER = "gps"; + /** + * Standard name of the GNSS hardware location provider. + * + *

This provider is similar to {@link LocationManager#GPS_PROVIDER}, but it directly uses the + * HAL GNSS implementation and doesn't go through any provider overrides that may exist. This + * provider will only be available when the GPS_PROVIDER is overridden with a proxy using {@link + * android.location.provider.LocationProviderBase#ACTION_GNSS_PROVIDER}, and is intended only + * for use internally by the location provider system. + * + * @hide + */ + @SystemApi + @RequiresPermission(Manifest.permission.LOCATION_HARDWARE) + public static final String GPS_HARDWARE_PROVIDER = "gps_hardware"; + /** * A special location provider for receiving locations without actively initiating a location * fix. This location provider is always present. diff --git a/location/java/android/location/provider/LocationProviderBase.java b/location/java/android/location/provider/LocationProviderBase.java index 5acec79a2d3b..18672b7fe10d 100644 --- a/location/java/android/location/provider/LocationProviderBase.java +++ b/location/java/android/location/provider/LocationProviderBase.java @@ -104,8 +104,6 @@ public abstract class LocationProviderBase { /** * The action the wrapping service should have in its intent filter to implement the * {@link android.location.LocationManager#GPS_PROVIDER}. - * - * @hide */ public static final String ACTION_GNSS_PROVIDER = "android.location.provider.action.GNSS_PROVIDER"; -- cgit v1.2.3-59-g8ed1b