OSDN Git Service

Allow holders of MANAGE_ACTIVITY_STACKS to launch on private displays
authorAndrii Kulian <akulian@google.com>
Fri, 17 Mar 2017 17:30:50 +0000 (10:30 -0700)
committerAndrii Kulian <akulian@google.com>
Fri, 17 Mar 2017 17:30:50 +0000 (10:30 -0700)
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

services/core/java/com/android/server/am/ActivityStackSupervisor.java

index 42efe0b..217515b 100644 (file)
@@ -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:"