diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f9b37fc2..fb9dc6889 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ Changelog * Added restrictions for [LinkProperties](http://developer.android.com/reference/android/net/LinkProperties.html) * Added restrictions *InetAddress.getAllByNameOnNet* and *InetAddress.getByNameOnNet* ([issue](/../../issues/1757)) * Added restriction *Srv_getCurrentSyncsAsUser* ([issue](/../../issues/1757)) +* Added restrictions *Srv_addGpsMeasurementsListener* and *Srv_addGpsNavigationMessageListener* ([issue](/../../issues/1757)) [Open issues](https://github.com/M66B/XPrivacy/issues?state=open) diff --git a/res/values/functions.xml b/res/values/functions.xml index de247a7c9..00998c382 100644 --- a/res/values/functions.xml +++ b/res/values/functions.xml @@ -159,6 +159,8 @@ Google documentation]]> Google documentation]]> Google documentation]]> + Google documentation]]> + Google documentation]]> phone state listener]]> Google documentation]]> Google documentation]]> diff --git a/src/biz/bokhorst/xprivacy/Meta.java b/src/biz/bokhorst/xprivacy/Meta.java index 2256f0ac6..b563ff66d 100644 --- a/src/biz/bokhorst/xprivacy/Meta.java +++ b/src/biz/bokhorst/xprivacy/Meta.java @@ -221,6 +221,8 @@ public static List get() { mListHook.add(new Hook("location", "Srv_getLastLocation", "ACCESS_COARSE_LOCATION,ACCESS_FINE_LOCATION", 1, "2.99", "getLastKnownLocation").AOSP(19)); mListHook.add(new Hook("location", "Srv_requestLocationUpdates", "ACCESS_COARSE_LOCATION,ACCESS_FINE_LOCATION", 1, "2.99", "requestLocationUpdates").restart().AOSP(19)); mListHook.add(new Hook("location", "Srv_sendExtraCommand", "ACCESS_COARSE_LOCATION,ACCESS_FINE_LOCATION", 3, "2.99", "sendExtraCommand").AOSP(19)); + mListHook.add(new Hook("location", "Srv_addGpsMeasurementsListener", "ACCESS_COARSE_LOCATION,ACCESS_FINE_LOCATION", 21, "3.5.6", null).AOSP(21)); + mListHook.add(new Hook("location", "Srv_addGpsNavigationMessageListener", "ACCESS_COARSE_LOCATION,ACCESS_FINE_LOCATION", 21, "3.5.6", null).AOSP(21)); mListHook.add(new Hook("location", "enableLocationUpdates", "CONTROL_LOCATION_UPDATES", 10, null, null).notAOSP(19)); mListHook.add(new Hook("location", "getAllCellInfo", "ACCESS_COARSE_UPDATES", 17, null, null).notAOSP(19)); @@ -587,6 +589,8 @@ public static List get() { mListHook.add(new Hook(null, "Srv_removeUpdates", "", 19, null, null).AOSP(19)); mListHook.add(new Hook(null, "Srv_removeGeofence", "", 19, null, null).AOSP(19)); mListHook.add(new Hook(null, "Srv_removeGpsStatusListener", "", 19, null, null).AOSP(19)); + mListHook.add(new Hook(null, "Srv_removeGpsMeasurementsListener", "", 21, null, null).AOSP(21)); + mListHook.add(new Hook(null, "Srv_removeGpsNavigationMessageListener", "", 21, null, null).AOSP(21)); mListHook.add(new Hook(null, "MapV1.disableMyLocation", "", 1, null, null).optional()); // MediaRecorder diff --git a/src/biz/bokhorst/xprivacy/XLocationManager.java b/src/biz/bokhorst/xprivacy/XLocationManager.java index bc6192c50..5c62660b0 100644 --- a/src/biz/bokhorst/xprivacy/XLocationManager.java +++ b/src/biz/bokhorst/xprivacy/XLocationManager.java @@ -74,6 +74,11 @@ public String getClassName() { // public boolean isProviderEnabled(java.lang.String provider) // public boolean sendExtraCommand(java.lang.String provider, java.lang.String command, android.os.Bundle extras) // http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4.4_r1/com/android/server/LocationManagerService.java + // public boolean addGpsMeasurementsListener(IGpsMeasurementsListener listener, String packageName) + // public boolean addGpsNavigationMessageListener(IGpsNavigationMessageListener listener, String packageName) + // public boolean removeGpsMeasurementsListener(IGpsMeasurementsListener listener) + // public boolean removeGpsNavigationMessageListener(IGpsNavigationMessageListener listener) + // http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.0_r1/com/android/server/LocationManagerService.java // @formatter:on @@ -92,7 +97,9 @@ private enum Methods { Srv_getLastLocation, Srv_addGpsStatusListener, Srv_removeGpsStatusListener, Srv_getAllProviders, Srv_getProviders, Srv_getBestProvider, Srv_isProviderEnabled, - Srv_sendExtraCommand + Srv_sendExtraCommand, + + Srv_addGpsMeasurementsListener, Srv_addGpsNavigationMessageListener, Srv_removeGpsMeasurementsListener, Srv_removeGpsNavigationMessageListener }; // @formatter:on @@ -134,6 +141,8 @@ protected void before(XParam param) throws Throwable { case addGpsStatusListener: case addNmeaListener: case Srv_addGpsStatusListener: + case Srv_addGpsMeasurementsListener: + case Srv_addGpsNavigationMessageListener: if (isRestricted(param)) param.setResult(false); break; @@ -143,6 +152,16 @@ protected void before(XParam param) throws Throwable { param.setResult(null); break; + case Srv_removeGpsMeasurementsListener: + if (isRestricted(param, PrivacyManager.cLocation, "Srv_addGpsMeasurementsListener")) + param.setResult(null); + break; + + case Srv_removeGpsNavigationMessageListener: + if (isRestricted(param, PrivacyManager.cLocation, "Srv_addGpsNavigationMessageListener")) + param.setResult(null); + break; + case getAllProviders: case getBestProvider: case getGpsStatus: @@ -216,8 +235,12 @@ protected void after(XParam param) throws Throwable { case addProximityAlert: case Srv_requestGeofence: case Srv_addGpsStatusListener: + case Srv_addGpsMeasurementsListener: + case Srv_addGpsNavigationMessageListener: case Srv_removeGeofence: case Srv_removeGpsStatusListener: + case Srv_removeGpsMeasurementsListener: + case Srv_removeGpsNavigationMessageListener: // Do nothing break;