From e6ac20e1c7146f326070101f14ffa8a456ae3fe8 Mon Sep 17 00:00:00 2001 From: Andrii Kulian Date: Fri, 17 Mar 2017 10:30:50 -0700 Subject: [PATCH] Allow holders of MANAGE_ACTIVITY_STACKS to launch on private displays MANAGE_ACTIVITY_STACKS permission allows moving stacks, tasks and activities between corresponding parents. It makes no sense to require more strict START_ANY_ACTIVITY permission to launch on private display, as an activity still can be moved to it. Bug: 34164473 Test: 'adb unroot' and run android.server.cts.ActivityManagerDisplayTests Change-Id: I3b59127829c432e42a46630025eeddd152bce1b0 --- .../java/com/android/server/am/ActivityStackSupervisor.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 42efe0b5d8e0e..217515b936dd6 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -16,6 +16,7 @@ package com.android.server.am; +import static android.Manifest.permission.MANAGE_ACTIVITY_STACKS; import static android.Manifest.permission.START_ANY_ACTIVITY; import static android.Manifest.permission.START_TASKS_FROM_RECENTS; import static android.app.ActivityManager.LOCK_TASK_MODE_LOCKED; @@ -1612,8 +1613,8 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D return true; } - // Check if the caller can launch anything. - final int startAnyPerm = mService.checkPermission(START_ANY_ACTIVITY, callingPid, + // Check if the caller can manage activity stacks. + final int startAnyPerm = mService.checkPermission(MANAGE_ACTIVITY_STACKS, callingPid, callingUid); if (startAnyPerm == PERMISSION_GRANTED) { if (DEBUG_TASKS) Slog.d(TAG, "Launch on display check:"