diff options
author | 2025-03-13 19:24:05 -0700 | |
---|---|---|
committer | 2025-03-18 16:01:33 -0700 | |
commit | fca4bcdd90f2bb276dd9869e99c3912546b37887 (patch) | |
tree | c07a1a46613d3db0b260f53212e6c0245babda71 | |
parent | f9bc523c2bb7e98f4ea33a6c2764e6e5d6e53d7a (diff) |
Add missing attribution tags to com.android.location.fused
Avoids warning prints in log:
W LocationManagerService: system location request with no attribution tag
W LocationManagerService: java.lang.IllegalArgumentException
Flag: android.location.flags.missing_attribution_tags_in_overlay
Bug : 403337028
Test: Manual
Change-Id: I11204b0724abc9d28fe819ea99b870397594d466
5 files changed, 30 insertions, 3 deletions
diff --git a/location/java/android/location/flags/location.aconfig b/location/java/android/location/flags/location.aconfig index 5b29b717fdc2..9cc58ae35692 100644 --- a/location/java/android/location/flags/location.aconfig +++ b/location/java/android/location/flags/location.aconfig @@ -212,3 +212,10 @@ flag { bug: "402997842" is_fixed_read_only: true } + +flag { + name: "missing_attribution_tags_in_overlay" + namespace: "location" + description: "Adds missing attribution tags in the Fused and Gnss overlay" + bug: "403337028" +} diff --git a/packages/FusedLocation/AndroidManifest.xml b/packages/FusedLocation/AndroidManifest.xml index 158c33ae2035..56fe38905660 100644 --- a/packages/FusedLocation/AndroidManifest.xml +++ b/packages/FusedLocation/AndroidManifest.xml @@ -30,6 +30,9 @@ <uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> + <attribution android:tag="FusedOverlayService" android:label="@string/fused_overlay_service"/> + <attribution android:tag="GnssOverlayService" android:label="@string/gnss_overlay_service"/> + <application android:label="@string/app_label" android:process="system" diff --git a/packages/FusedLocation/res/values/strings.xml b/packages/FusedLocation/res/values/strings.xml index 5b78e39d1ba6..25e1fe7677bb 100644 --- a/packages/FusedLocation/res/values/strings.xml +++ b/packages/FusedLocation/res/values/strings.xml @@ -2,4 +2,8 @@ <resources> <!-- Name of the application. [CHAR LIMIT=35] --> <string name="app_label">Fused Location</string> + <!-- Attribution for Fused Overlay Service. [CHAR LIMIT=NONE]--> + <string name="fused_overlay_service">Fused Overlay Service</string> + <!-- Attribution for GNSS Overlay Service. [CHAR LIMIT=NONE]--> + <string name="gnss_overlay_service">GNSS Overlay Service</string> </resources> diff --git a/packages/FusedLocation/src/com/android/location/fused/FusedLocationProvider.java b/packages/FusedLocation/src/com/android/location/fused/FusedLocationProvider.java index a0e008c9437f..78b2f7e52ca5 100644 --- a/packages/FusedLocation/src/com/android/location/fused/FusedLocationProvider.java +++ b/packages/FusedLocation/src/com/android/location/fused/FusedLocationProvider.java @@ -53,6 +53,7 @@ import java.util.concurrent.atomic.AtomicInteger; public class FusedLocationProvider extends LocationProviderBase { private static final String TAG = "FusedLocationProvider"; + private static final String ATTRIBUTION_TAG = "FusedOverlayService"; private static final ProviderProperties PROPERTIES = new ProviderProperties.Builder() .setHasAltitudeSupport(true) @@ -89,8 +90,12 @@ public class FusedLocationProvider extends LocationProviderBase { public FusedLocationProvider(Context context) { super(context, TAG, PROPERTIES); - mContext = context; - mLocationManager = Objects.requireNonNull(context.getSystemService(LocationManager.class)); + if (Flags.missingAttributionTagsInOverlay()) { + mContext = context.createAttributionContext(ATTRIBUTION_TAG); + } else { + mContext = context; + } + mLocationManager = Objects.requireNonNull(mContext.getSystemService(LocationManager.class)); mGpsListener = new ChildLocationListener(GPS_PROVIDER); mNetworkListener = new ChildLocationListener(NETWORK_PROVIDER); diff --git a/packages/FusedLocation/src/com/android/location/gnss/GnssOverlayLocationProvider.java b/packages/FusedLocation/src/com/android/location/gnss/GnssOverlayLocationProvider.java index c6576e39de99..86bcd99822fc 100644 --- a/packages/FusedLocation/src/com/android/location/gnss/GnssOverlayLocationProvider.java +++ b/packages/FusedLocation/src/com/android/location/gnss/GnssOverlayLocationProvider.java @@ -21,6 +21,7 @@ import static android.location.provider.ProviderProperties.POWER_USAGE_HIGH; import android.annotation.Nullable; import android.content.Context; +import android.location.flags.Flags; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; @@ -41,6 +42,7 @@ import java.util.List; public class GnssOverlayLocationProvider extends LocationProviderBase { private static final String TAG = "GnssOverlay"; + private static final String ATTRIBUTION_TAG = "GnssOverlayService"; private static final ProviderProperties PROPERTIES = new ProviderProperties.Builder() .setHasAltitudeSupport(true) @@ -87,7 +89,13 @@ public class GnssOverlayLocationProvider extends LocationProviderBase { public GnssOverlayLocationProvider(Context context) { super(context, TAG, PROPERTIES); - mLocationManager = context.getSystemService(LocationManager.class); + + if (Flags.missingAttributionTagsInOverlay()) { + Context contextWithAttribution = context.createAttributionContext(ATTRIBUTION_TAG); + mLocationManager = contextWithAttribution.getSystemService(LocationManager.class); + } else { + mLocationManager = context.getSystemService(LocationManager.class); + } } void start() { |