Merge "Remove cell info from legacy apps without location on"

am: 6b0e7370e2

Change-Id: I6f0b5391b7a49232fc8bebd38047af0d77e333e1
This commit is contained in:
Hall Liu
2018-03-02 02:18:16 +00:00
committed by android-build-merger

View File

@@ -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)