Fix DPM check logic for AppUsageLimitObserver (un)registering
In the case that the DevicePolicyManagerInternal Local service does not exist on device, the permission check for (un)registerAppUsageLimitObserver should not be skipped. Test: atest android.app.usage.cts.UsageStatsTest (must be on a device with <unavailable-feature name="android.software.device_admin" /> in it's features xml) Fixes: 155360727 Change-Id: I8a88e03a7636956d27f531cf989bda1a32799f07
This commit is contained in:
@@ -1847,7 +1847,7 @@ public class UsageStatsService extends SystemService implements
|
||||
final DevicePolicyManagerInternal dpmInternal = getDpmInternal();
|
||||
if (!hasPermissions(callingPackage,
|
||||
Manifest.permission.SUSPEND_APPS, Manifest.permission.OBSERVE_APP_USAGE)
|
||||
&& (dpmInternal != null && !dpmInternal.isActiveSupervisionApp(callingUid))) {
|
||||
&& (dpmInternal == null || !dpmInternal.isActiveSupervisionApp(callingUid))) {
|
||||
throw new SecurityException("Caller must be the active supervision app or "
|
||||
+ "it must have both SUSPEND_APPS and OBSERVE_APP_USAGE permissions");
|
||||
}
|
||||
@@ -1874,7 +1874,7 @@ public class UsageStatsService extends SystemService implements
|
||||
final DevicePolicyManagerInternal dpmInternal = getDpmInternal();
|
||||
if (!hasPermissions(callingPackage,
|
||||
Manifest.permission.SUSPEND_APPS, Manifest.permission.OBSERVE_APP_USAGE)
|
||||
&& (dpmInternal != null && !dpmInternal.isActiveSupervisionApp(callingUid))) {
|
||||
&& (dpmInternal == null || !dpmInternal.isActiveSupervisionApp(callingUid))) {
|
||||
throw new SecurityException("Caller must be the active supervision app or "
|
||||
+ "it must have both SUSPEND_APPS and OBSERVE_APP_USAGE permissions");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user