diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index 783e7d3e2afc3..b2a923043dbee 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -581,6 +581,7 @@ public class DevicePolicyManager { *
  • {@link #LOCK_TASK_FEATURE_HOME}
  • *
  • {@link #LOCK_TASK_FEATURE_GLOBAL_ACTIONS}
  • *
  • {@link #LOCK_TASK_FEATURE_NOTIFICATIONS}
  • + *
  • {@link #LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK}
  • * *
  • {@link #getLockTaskFeatures(ComponentName)}
  • *
  • {@link #setLockTaskPackages(ComponentName, String[])}
  • diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index edb8e0c5aa646..de1403b64477a 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -139,6 +139,7 @@ import static android.app.admin.DevicePolicyManager.ID_TYPE_INDIVIDUAL_ATTESTATI import static android.app.admin.DevicePolicyManager.ID_TYPE_MEID; import static android.app.admin.DevicePolicyManager.ID_TYPE_SERIAL; import static android.app.admin.DevicePolicyManager.LEAVE_ALL_SYSTEM_APPS_ENABLED; +import static android.app.admin.DevicePolicyManager.LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK; import static android.app.admin.DevicePolicyManager.LOCK_TASK_FEATURE_GLOBAL_ACTIONS; import static android.app.admin.DevicePolicyManager.LOCK_TASK_FEATURE_HOME; import static android.app.admin.DevicePolicyManager.LOCK_TASK_FEATURE_KEYGUARD; @@ -15139,7 +15140,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { private void enforceCanSetLockTaskFeaturesOnFinancedDevice(CallerIdentity caller, int flags) { int allowedFlags = LOCK_TASK_FEATURE_SYSTEM_INFO | LOCK_TASK_FEATURE_KEYGUARD | LOCK_TASK_FEATURE_HOME | LOCK_TASK_FEATURE_GLOBAL_ACTIONS - | LOCK_TASK_FEATURE_NOTIFICATIONS; + | LOCK_TASK_FEATURE_NOTIFICATIONS | LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK; if (!isFinancedDeviceOwner(caller)) { return; @@ -15150,7 +15151,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { "Permitted lock task features when managing a financed device: " + "LOCK_TASK_FEATURE_SYSTEM_INFO, LOCK_TASK_FEATURE_KEYGUARD, " + "LOCK_TASK_FEATURE_HOME, LOCK_TASK_FEATURE_GLOBAL_ACTIONS, " - + "or LOCK_TASK_FEATURE_NOTIFICATIONS"); + + "LOCK_TASK_FEATURE_NOTIFICATIONS" + + " or LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK"); } } diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java index 39de2cf86a6cb..99a3b808e082a 100644 --- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java @@ -7842,7 +7842,7 @@ public class DevicePolicyManagerTest extends DpmTestBase { throws Exception { int validLockTaskFeatures = LOCK_TASK_FEATURE_SYSTEM_INFO | LOCK_TASK_FEATURE_KEYGUARD | LOCK_TASK_FEATURE_HOME | LOCK_TASK_FEATURE_GLOBAL_ACTIONS - | LOCK_TASK_FEATURE_NOTIFICATIONS; + | LOCK_TASK_FEATURE_NOTIFICATIONS | LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK; setDeviceOwner(); dpm.setDeviceOwnerType(admin1, DEVICE_OWNER_TYPE_FINANCED); @@ -7857,7 +7857,7 @@ public class DevicePolicyManagerTest extends DpmTestBase { public void testSetLockTaskFeatures_financeDo_invalidLockTaskFeatures_throwsException() throws Exception { int invalidLockTaskFeatures = LOCK_TASK_FEATURE_NONE | LOCK_TASK_FEATURE_OVERVIEW - | LOCK_TASK_FEATURE_HOME | LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK; + | LOCK_TASK_FEATURE_HOME; setDeviceOwner(); dpm.setDeviceOwnerType(admin1, DEVICE_OWNER_TYPE_FINANCED); // Called during setup.