diff --git a/android/src/main/java/com/gantix/JailMonkey/MockLocation/MockLocationCheck.java b/android/src/main/java/com/gantix/JailMonkey/MockLocation/MockLocationCheck.java index 0d38295..16dd86c 100644 --- a/android/src/main/java/com/gantix/JailMonkey/MockLocation/MockLocationCheck.java +++ b/android/src/main/java/com/gantix/JailMonkey/MockLocation/MockLocationCheck.java @@ -1,6 +1,7 @@ package com.gantix.JailMonkey.MockLocation; import android.content.Context; +import java.util.Arrays; import android.provider.Settings; import android.os.Build; import android.util.Log; @@ -21,6 +22,11 @@ public static boolean isMockLocationOn(Context context) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { return "0".equals(Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION)); } else { + List ignorePackages = Arrays.asList( + context.getPackageName(), + "com.android.calendar", + "com.google.android.calendar" + ); PackageManager pm = context.getPackageManager(); List packages = pm.getInstalledApplications(PackageManager.GET_META_DATA); @@ -38,8 +44,12 @@ public static boolean isMockLocationOn(Context context) { for (int i = 0; i < requestedPermissions.length; i++) { if (requestedPermissions[i] .equals("android.permission.ACCESS_MOCK_LOCATION") - && !applicationInfo.packageName.equals(context.getPackageName())) { - return true; + && !ignorePackages.contains(applicationInfo.packageName)) { + int flag = packageInfo.requestedPermissionsFlags[i]; + boolean granted = (flag & PackageInfo.REQUESTED_PERMISSION_GRANTED) != 0; + if (granted) { + return true; + } } } }