Special case location provider camera accesses and show them as

indicators

Bug: 162547999
Test: Made location provider access camera and saw privacy chip
Change-Id: I5960fdff38b38a0bd8f4d9c9826639cc89a94603
This commit is contained in:
Philip P. Moltmann
2020-08-18 19:39:01 -07:00
parent 94afe73ca2
commit 64c801d344

View File

@@ -19,6 +19,7 @@ package com.android.systemui.appops;
import android.app.AppOpsManager; import android.app.AppOpsManager;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.location.LocationManager;
import android.media.AudioManager; import android.media.AudioManager;
import android.media.AudioRecordingConfiguration; import android.media.AudioRecordingConfiguration;
import android.os.Handler; import android.os.Handler;
@@ -66,6 +67,7 @@ public class AppOpsControllerImpl implements AppOpsController,
private final AppOpsManager mAppOps; private final AppOpsManager mAppOps;
private final AudioManager mAudioManager; private final AudioManager mAudioManager;
private final LocationManager mLocationManager;
private H mBGHandler; private H mBGHandler;
private final List<AppOpsController.Callback> mCallbacks = new ArrayList<>(); private final List<AppOpsController.Callback> mCallbacks = new ArrayList<>();
private final ArrayMap<Integer, Set<Callback>> mCallbacksByCode = new ArrayMap<>(); private final ArrayMap<Integer, Set<Callback>> mCallbacksByCode = new ArrayMap<>();
@@ -106,6 +108,7 @@ public class AppOpsControllerImpl implements AppOpsController,
mCallbacksByCode.put(OPS[i], new ArraySet<>()); mCallbacksByCode.put(OPS[i], new ArraySet<>());
} }
mAudioManager = audioManager; mAudioManager = audioManager;
mLocationManager = context.getSystemService(LocationManager.class);
dumpManager.registerDumpable(TAG, this); dumpManager.registerDumpable(TAG, this);
} }
@@ -310,6 +313,11 @@ public class AppOpsControllerImpl implements AppOpsController,
return true; return true;
} }
if (appOpCode == AppOpsManager.OP_CAMERA && mLocationManager.isProviderPackage(
packageName)) {
return true;
}
return isUserSensitive(appOpCode, uid, packageName); return isUserSensitive(appOpCode, uid, packageName);
} }