diff --git a/core/java/android/os/PackageTagsList.java b/core/java/android/os/PackageTagsList.java index 4a81dc6f592ee..df99074a851f9 100644 --- a/core/java/android/os/PackageTagsList.java +++ b/core/java/android/os/PackageTagsList.java @@ -26,6 +26,7 @@ import android.util.ArraySet; import com.android.internal.annotations.Immutable; import java.io.PrintWriter; +import java.util.ArrayList; import java.util.Collection; import java.util.Map; import java.util.Objects; @@ -140,6 +141,17 @@ public final class PackageTagsList implements Parcelable { return true; } + /** + * Returns a list of packages. + * + * @deprecated Do not use. + * @hide + */ + @Deprecated + public @NonNull Collection getPackages() { + return new ArrayList<>(mPackageTags.keySet()); + } + public static final @NonNull Parcelable.Creator CREATOR = new Parcelable.Creator() { @SuppressWarnings("unchecked") @@ -217,7 +229,7 @@ public final class PackageTagsList implements Parcelable { if (j > 0) { pw.print(", "); } - if (attributionTag.startsWith(packageName)) { + if (attributionTag != null && attributionTag.startsWith(packageName)) { pw.print(attributionTag.substring(packageName.length())); } else { pw.print(attributionTag); diff --git a/location/java/android/location/ILocationManager.aidl b/location/java/android/location/ILocationManager.aidl index 2b9f15911f4dd..42b72d4c95dc9 100644 --- a/location/java/android/location/ILocationManager.aidl +++ b/location/java/android/location/ILocationManager.aidl @@ -146,4 +146,5 @@ interface ILocationManager // used by gts tests to verify whitelists String[] getBackgroundThrottlingWhitelist(); PackageTagsList getIgnoreSettingsAllowlist(); + PackageTagsList getAdasAllowlist(); } diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java index f596502038897..32015b87f487b 100644 --- a/location/java/android/location/LocationManager.java +++ b/location/java/android/location/LocationManager.java @@ -503,6 +503,19 @@ public class LocationManager { } } + /** + * Returns ADAS packages and their associated attribution tags. + * + * @hide + */ + public @NonNull PackageTagsList getAdasAllowlist() { + try { + return mService.getAdasAllowlist(); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + /** * Returns the extra location controller package on the device. * diff --git a/services/core/java/com/android/server/location/LocationManagerService.java b/services/core/java/com/android/server/location/LocationManagerService.java index 8c03ead9ac098..1d1057f8ae9f5 100644 --- a/services/core/java/com/android/server/location/LocationManagerService.java +++ b/services/core/java/com/android/server/location/LocationManagerService.java @@ -676,6 +676,11 @@ public class LocationManagerService extends ILocationManager.Stub implements return mInjector.getSettingsHelper().getIgnoreSettingsAllowlist(); } + @Override + public PackageTagsList getAdasAllowlist() { + return mInjector.getSettingsHelper().getAdasAllowlist(); + } + @Nullable @Override public ICancellationSignal getCurrentLocation(String provider, LocationRequest request,