diff options
| author | 2022-09-09 17:32:41 +0000 | |
|---|---|---|
| committer | 2022-09-09 17:32:41 +0000 | |
| commit | 1cb77337d46cc1514300b450e5192ff69e73fbdf (patch) | |
| tree | b3f963ad4d0d2160772948ca252ceb8af5a87ab8 | |
| parent | 265dc19143a6d0973c207c19c672f9950325de2d (diff) | |
| parent | 92de002983a8c8c3db42b139dc5b9c1a4684938c (diff) | |
Merge "CameraService: Check if the camera is disabled via device policy by user." into tm-qpr-dev
| -rw-r--r-- | services/core/java/com/android/server/camera/CameraServiceProxy.java | 9 | ||||
| -rw-r--r-- | services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java | 7 |
2 files changed, 13 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/camera/CameraServiceProxy.java b/services/core/java/com/android/server/camera/CameraServiceProxy.java index b425420479f0..aec60deba933 100644 --- a/services/core/java/com/android/server/camera/CameraServiceProxy.java +++ b/services/core/java/com/android/server/camera/CameraServiceProxy.java @@ -582,13 +582,18 @@ public class CameraServiceProxy extends SystemService } @Override - public boolean isCameraDisabled() { + public boolean isCameraDisabled(int userId) { DevicePolicyManager dpm = mContext.getSystemService(DevicePolicyManager.class); if (dpm == null) { Slog.e(TAG, "Failed to get the device policy manager service"); return false; } - return dpm.getCameraDisabled(null); + try { + return dpm.getCameraDisabled(null, userId); + } catch (Exception e) { + e.printStackTrace(); + return false; + } } }; diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 06fb4b0a01d8..6aca14f08188 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -8178,7 +8178,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } final CallerIdentity caller = getCallerIdentity(who); - Preconditions.checkCallAuthorization(hasFullCrossUsersPermission(caller, userHandle)); + Preconditions.checkCallAuthorization(hasFullCrossUsersPermission(caller, userHandle) + || isCameraServerUid(caller)); if (parent) { Preconditions.checkCallAuthorization( @@ -9689,6 +9690,10 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return UserHandle.isSameApp(caller.getUid(), Process.SHELL_UID); } + private boolean isCameraServerUid(CallerIdentity caller) { + return UserHandle.isSameApp(caller.getUid(), Process.CAMERASERVER_UID); + } + private @UserIdInt int getCurrentForegroundUserId() { try { UserInfo currentUser = mInjector.getIActivityManager().getCurrentUser(); |