summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Monk <jmonk@google.com>2015-06-17 14:44:39 -0400
committerJason Monk <jmonk@google.com>2015-06-17 15:16:51 -0400
commitb71218aec133981126b0f916fc1f731fdbb04b1b (patch)
treefd5bb69dffe475ed277c992f38202561d68bab84
parentf858f7034c911c1a4dc45daa6e80ee0f9925e008 (diff)
downloadframeworks_base-b71218aec133981126b0f916fc1f731fdbb04b1b.zip
frameworks_base-b71218aec133981126b0f916fc1f731fdbb04b1b.tar.gz
frameworks_base-b71218aec133981126b0f916fc1f731fdbb04b1b.tar.bz2
Add way to get the network location provider package
Bug: 21805447 Change-Id: Ie9fd35a69d8808ae4346927b30b77e9fd733b569
-rw-r--r--location/java/android/location/ILocationManager.aidl1
-rw-r--r--services/core/java/com/android/server/LocationManagerService.java21
2 files changed, 22 insertions, 0 deletions
diff --git a/location/java/android/location/ILocationManager.aidl b/location/java/android/location/ILocationManager.aidl
index a3ea896..f3d755c 100644
--- a/location/java/android/location/ILocationManager.aidl
+++ b/location/java/android/location/ILocationManager.aidl
@@ -75,6 +75,7 @@ interface ILocationManager
String getBestProvider(in Criteria criteria, boolean enabledOnly);
boolean providerMeetsCriteria(String provider, in Criteria criteria);
ProviderProperties getProviderProperties(String provider);
+ String getNetworkProviderPackage();
boolean isProviderEnabled(String provider);
void addTestProvider(String name, in ProviderProperties properties, String opPackageName);
diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java
index c76fc1c..743aafb 100644
--- a/services/core/java/com/android/server/LocationManagerService.java
+++ b/services/core/java/com/android/server/LocationManagerService.java
@@ -1958,6 +1958,27 @@ public class LocationManagerService extends ILocationManager.Stub {
return p.getProperties();
}
+ /**
+ * @return null if the provider does not exist
+ * @throws SecurityException if the provider is not allowed to be
+ * accessed by the caller
+ */
+ @Override
+ public String getNetworkProviderPackage() {
+ LocationProviderInterface p;
+ synchronized (mLock) {
+ if (mProvidersByName.get(LocationManager.NETWORK_PROVIDER) == null) {
+ return null;
+ }
+ p = mProvidersByName.get(LocationManager.NETWORK_PROVIDER);
+ }
+
+ if (p instanceof LocationProviderProxy) {
+ return ((LocationProviderProxy) p).getConnectedPackageName();
+ }
+ return null;
+ }
+
@Override
public boolean isProviderEnabled(String provider) {
// Fused provider is accessed indirectly via criteria rather than the provider-based APIs,