From e95e91730e5c72a2a99b7bcc339d45712b54354f Mon Sep 17 00:00:00 2001 From: Yanli Wan Date: Tue, 16 Aug 2022 23:32:40 +0000 Subject: [PATCH] Add updateLockTaskPackages API to ActivityTaskManager The API will be available in CTS so that we can use it directly instead of calling it from other system components. Bug: 240602359 Test: Build & call the API from CTS Change-Id: I8aa6ee85adb62cda67479c7213d2bc022acd0eec --- core/api/test-current.txt | 1 + core/java/android/app/ActivityTaskManager.java | 10 ++++++++++ core/java/android/app/IActivityTaskManager.aidl | 1 + packages/Shell/AndroidManifest.xml | 3 +++ 4 files changed, 15 insertions(+) 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 @@ + + +