From 0d77ea68937f382c36c3c122ebe504d4db2ca83f Mon Sep 17 00:00:00 2001 From: Soonil Nagarkar Date: Thu, 31 Jan 2019 14:36:56 -0800 Subject: Change provider packages API to test all providers This will replace the LocationManager.getNetworkProviderPackage() API with LocationManager.isProviderPackage(). The network provider should not be considered special. In addition, providers now have the ability to specify additional packages that may make location requests on their behalf, so that those packages can be considered location providers as well. Bug: 117177078 Test: manually Change-Id: I204b56e7bb40874ac3347988474fb8afa787feb8 --- location/java/android/location/ILocationManager.aidl | 3 ++- location/java/android/location/LocationManager.java | 16 ++++++++++++++++ .../internal/location/ILocationProviderManager.aidl | 2 ++ 3 files changed, 20 insertions(+), 1 deletion(-) (limited to 'location/java') diff --git a/location/java/android/location/ILocationManager.aidl b/location/java/android/location/ILocationManager.aidl index e795b8119760..e91012fe0afe 100644 --- a/location/java/android/location/ILocationManager.aidl +++ b/location/java/android/location/ILocationManager.aidl @@ -85,12 +85,13 @@ interface ILocationManager boolean stopGnssBatch(); boolean injectLocation(in Location location); - // --- deprecated --- List getAllProviders(); List getProviders(in Criteria criteria, boolean enabledOnly); String getBestProvider(in Criteria criteria, boolean enabledOnly); ProviderProperties getProviderProperties(String provider); String getNetworkProviderPackage(); + boolean isProviderPackage(String packageName); + void setLocationControllerExtraPackage(String packageName); String getLocationControllerExtraPackage(); void setLocationControllerExtraPackageEnabled(boolean enabled); diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java index 63b57d166f1f..5aba22f4c6b1 100644 --- a/location/java/android/location/LocationManager.java +++ b/location/java/android/location/LocationManager.java @@ -2424,6 +2424,22 @@ public class LocationManager { } } + /** + * Returns true if the given package name matches a location provider package, and false + * otherwise. + * + * @hide + */ + @SystemApi + public boolean isProviderPackage(String packageName) { + try { + return mService.isProviderPackage(packageName); + } catch (RemoteException e) { + e.rethrowFromSystemServer(); + return false; + } + } + /** * Set the extra location controller package for location services on the device. * diff --git a/location/java/com/android/internal/location/ILocationProviderManager.aidl b/location/java/com/android/internal/location/ILocationProviderManager.aidl index b1b8f0c7c3f7..79166ae3a9b0 100644 --- a/location/java/com/android/internal/location/ILocationProviderManager.aidl +++ b/location/java/com/android/internal/location/ILocationProviderManager.aidl @@ -26,6 +26,8 @@ import com.android.internal.location.ProviderProperties; */ interface ILocationProviderManager { + void onSetAdditionalProviderPackages(in List packageNames); + void onSetEnabled(boolean enabled); void onSetProperties(in ProviderProperties properties); -- cgit v1.2.3-59-g8ed1b