diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index ddbccfa8f4041..e9cbf41c22b4f 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -195,6 +195,7 @@ package android.app {
method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_TASKS) public void stopSystemLockTaskMode();
method public static boolean supportsMultiWindow(android.content.Context);
method public static boolean supportsSplitScreenMultiWindow(android.content.Context);
+ method @RequiresPermission("android.permission.UPDATE_LOCK_TASK_PACKAGES") public void updateLockTaskPackages(@NonNull android.content.Context, @NonNull String[]);
field public static final int DEFAULT_MINIMAL_SPLIT_SCREEN_DISPLAY_SIZE_DP = 440; // 0x1b8
field public static final int INVALID_STACK_ID = -1; // 0xffffffff
}
diff --git a/core/java/android/app/ActivityTaskManager.java b/core/java/android/app/ActivityTaskManager.java
index f17d5b7c0190d..7cfca979ed0f7 100644
--- a/core/java/android/app/ActivityTaskManager.java
+++ b/core/java/android/app/ActivityTaskManager.java
@@ -496,6 +496,16 @@ public class ActivityTaskManager {
}
}
+ /** Update the list of packages allowed in lock task mode. */
+ @RequiresPermission(android.Manifest.permission.UPDATE_LOCK_TASK_PACKAGES)
+ public void updateLockTaskPackages(@NonNull Context context, @NonNull String[] packages) {
+ try {
+ getService().updateLockTaskPackages(context.getUserId(), packages);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
/**
* Information you can retrieve about a root task in the system.
* @hide
diff --git a/core/java/android/app/IActivityTaskManager.aidl b/core/java/android/app/IActivityTaskManager.aidl
index 6576a1a5d3c2a..7c357a62d5b74 100644
--- a/core/java/android/app/IActivityTaskManager.aidl
+++ b/core/java/android/app/IActivityTaskManager.aidl
@@ -173,6 +173,7 @@ interface IActivityTaskManager {
Rect getTaskBounds(int taskId);
void cancelRecentsAnimation(boolean restoreHomeRootTaskPosition);
+ @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.UPDATE_LOCK_TASK_PACKAGES)")
void updateLockTaskPackages(int userId, in String[] packages);
boolean isInLockTaskMode();
int getLockTaskModeState();
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index b31e36c417ab7..35bb558b18820 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -704,6 +704,9 @@
+
+
+