From 8d8948d7ba03b94235ddeac1642072d0b4224d02 Mon Sep 17 00:00:00 2001 From: Ilyas Sung Date: Wed, 1 Feb 2023 17:15:20 +0000 Subject: [PATCH] Added DPM constant for exempt from start foreground service from background with while in user permission restriction. Bug: 246330879 Test: atest ApplicationExemptionsTest Change-Id: I904556207e04dfc32194d92e1913c94d5da8d1c8 --- core/api/system-current.txt | 1 + core/java/android/app/admin/DevicePolicyManager.java | 12 +++++++++++- .../devicepolicy/DevicePolicyManagerService.java | 5 +++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 07c471d6ce2e1..c2216f095fc13 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -1299,6 +1299,7 @@ package android.app.admin { field public static final int EXEMPT_FROM_ACTIVITY_BG_START_RESTRICTION = 2; // 0x2 field public static final int EXEMPT_FROM_APP_STANDBY = 0; // 0x0 field public static final int EXEMPT_FROM_DISMISSIBLE_NOTIFICATIONS = 1; // 0x1 + field public static final int EXEMPT_FROM_FGS_BG_START_WHILE_IN_USE_PERMISSION_RESTRICTION = 4; // 0x4 field public static final int EXEMPT_FROM_HIBERNATION = 3; // 0x3 field public static final String EXTRA_FORCE_UPDATE_ROLE_HOLDER = "android.app.extra.FORCE_UPDATE_ROLE_HOLDER"; field public static final String EXTRA_LOST_MODE_LOCATION = "android.app.extra.LOST_MODE_LOCATION"; diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index c7fe9651a9210..c273d88c05066 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -3904,6 +3904,15 @@ public class DevicePolicyManager { @SystemApi public static final int EXEMPT_FROM_HIBERNATION = 3; + /** + * Exempt an app from the start foreground service from background with while in user permission + * restriction. + * + * @hide + */ + @SystemApi + public static final int EXEMPT_FROM_FGS_BG_START_WHILE_IN_USE_PERMISSION_RESTRICTION = 4; + /** * Exemptions to platform restrictions, given to an application through * {@link #setApplicationExemptions(String, Set)}. @@ -3914,7 +3923,8 @@ public class DevicePolicyManager { EXEMPT_FROM_APP_STANDBY, EXEMPT_FROM_DISMISSIBLE_NOTIFICATIONS, EXEMPT_FROM_ACTIVITY_BG_START_RESTRICTION, - EXEMPT_FROM_HIBERNATION + EXEMPT_FROM_HIBERNATION, + EXEMPT_FROM_FGS_BG_START_WHILE_IN_USE_PERMISSION_RESTRICTION }) @Retention(RetentionPolicy.SOURCE) public @interface ApplicationExemptionConstants {} diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 40e047f3a9903..e774732cb9a2a 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -34,6 +34,7 @@ import static android.app.AppOpsManager.MODE_DEFAULT; import static android.app.AppOpsManager.OPSTR_SYSTEM_EXEMPT_FROM_ACTIVITY_BG_START_RESTRICTION; import static android.app.AppOpsManager.OPSTR_SYSTEM_EXEMPT_FROM_APP_STANDBY; import static android.app.AppOpsManager.OPSTR_SYSTEM_EXEMPT_FROM_DISMISSIBLE_NOTIFICATIONS; +import static android.app.AppOpsManager.OPSTR_SYSTEM_EXEMPT_FROM_FGS_BG_START_WHILE_IN_USE_PERMISSION_RESTRICTION; import static android.app.AppOpsManager.OPSTR_SYSTEM_EXEMPT_FROM_HIBERNATION; import static android.app.admin.DeviceAdminInfo.HEADLESS_DEVICE_OWNER_MODE_AFFILIATED; import static android.app.admin.DeviceAdminReceiver.ACTION_COMPLIANCE_ACKNOWLEDGEMENT_REQUIRED; @@ -63,6 +64,7 @@ import static android.app.admin.DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE_PER import static android.app.admin.DevicePolicyManager.EXEMPT_FROM_ACTIVITY_BG_START_RESTRICTION; import static android.app.admin.DevicePolicyManager.EXEMPT_FROM_APP_STANDBY; import static android.app.admin.DevicePolicyManager.EXEMPT_FROM_DISMISSIBLE_NOTIFICATIONS; +import static android.app.admin.DevicePolicyManager.EXEMPT_FROM_FGS_BG_START_WHILE_IN_USE_PERMISSION_RESTRICTION; import static android.app.admin.DevicePolicyManager.EXEMPT_FROM_HIBERNATION; import static android.app.admin.DevicePolicyManager.EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE; import static android.app.admin.DevicePolicyManager.EXTRA_RESOURCE_IDS; @@ -732,6 +734,9 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { OPSTR_SYSTEM_EXEMPT_FROM_ACTIVITY_BG_START_RESTRICTION); APPLICATION_EXEMPTION_CONSTANTS_TO_APP_OPS.put( EXEMPT_FROM_HIBERNATION, OPSTR_SYSTEM_EXEMPT_FROM_HIBERNATION); + APPLICATION_EXEMPTION_CONSTANTS_TO_APP_OPS.put( + EXEMPT_FROM_FGS_BG_START_WHILE_IN_USE_PERMISSION_RESTRICTION, + OPSTR_SYSTEM_EXEMPT_FROM_FGS_BG_START_WHILE_IN_USE_PERMISSION_RESTRICTION); } /**