From f0b206d3cab7af0cde0295ddaf2f1ffb921f017d Mon Sep 17 00:00:00 2001 From: Hall Liu Date: Mon, 18 Dec 2017 17:18:53 -0800 Subject: [PATCH] Remove cell info from legacy apps without location on No longer allow legacy apps to access cell info location data when location is turned off in settings. Bug: 69637693 Test: manual Change-Id: Ibff3cc75898dc189632f2f9427892423a404333f --- .../telephony/LocationAccessPolicy.java | 32 +------------------ 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/telephony/java/android/telephony/LocationAccessPolicy.java b/telephony/java/android/telephony/LocationAccessPolicy.java index b362df9ff6774..26ffe3216bdce 100644 --- a/telephony/java/android/telephony/LocationAccessPolicy.java +++ b/telephony/java/android/telephony/LocationAccessPolicy.java @@ -82,8 +82,7 @@ public final class LocationAccessPolicy { .noteOpNoThrow(opCode, uid, pkgName) != AppOpsManager.MODE_ALLOWED) { return false; } - if (!isLocationModeEnabled(context, UserHandle.getUserId(uid)) - && !isLegacyForeground(context, pkgName, uid)) { + if (!isLocationModeEnabled(context, UserHandle.getUserId(uid))) { return false; } // If the user or profile is current, permission is granted. @@ -101,35 +100,6 @@ public final class LocationAccessPolicy { && locationMode != Settings.Secure.LOCATION_MODE_SENSORS_ONLY; } - private static boolean isLegacyForeground(@NonNull Context context, @NonNull String pkgName, - int uid) { - long token = Binder.clearCallingIdentity(); - try { - return isLegacyVersion(context, pkgName) && isForegroundApp(context, uid); - } finally { - Binder.restoreCallingIdentity(token); - } - } - - private static boolean isLegacyVersion(@NonNull Context context, @NonNull String pkgName) { - try { - if (context.getPackageManager().getApplicationInfo(pkgName, 0) - .targetSdkVersion <= Build.VERSION_CODES.O) { - return true; - } - } catch (PackageManager.NameNotFoundException e) { - // In case of exception, assume known app (more strict checking) - // Note: This case will never happen since checkPackage is - // called to verify validity before checking app's version. - } - return false; - } - - private static boolean isForegroundApp(@NonNull Context context, int uid) { - final ActivityManager am = context.getSystemService(ActivityManager.class); - return am.getUidImportance(uid) <= ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE; - } - private static boolean checkInteractAcrossUsersFull(@NonNull Context context) { return context.checkCallingOrSelfPermission( android.Manifest.permission.INTERACT_ACROSS_USERS_FULL)