diff options
| author | 2019-01-31 14:36:56 -0800 | |
|---|---|---|
| committer | 2019-02-04 10:58:24 -0800 | |
| commit | 0d77ea68937f382c36c3c122ebe504d4db2ca83f (patch) | |
| tree | 8acb9d4b893bc3c3f47c99338a557427e6f02c81 /location/java | |
| parent | affa55b49baebce7ae1b8bb893e015379df83a49 (diff) | |
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
Diffstat (limited to 'location/java')
3 files changed, 20 insertions, 1 deletions
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<String> getAllProviders(); List<String> 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 @@ -2425,6 +2425,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. * * @hide 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<String> packageNames); + void onSetEnabled(boolean enabled); void onSetProperties(in ProviderProperties properties); |