From 9233534a81daaac976c9edaf015b9e25c392621a Mon Sep 17 00:00:00 2001 From: Jonathan Scott Date: Tue, 17 Dec 2019 14:46:26 +0000 Subject: [PATCH] Allow starting activities across user with INTERACT_ACROSS_USERS. Test: atest com.android.cts.devicepolicy.crossprofile.StartActivityAsUserTest Fixes: 146123779 Change-Id: Ie5b953381208b4d01127392c9ddad93ace7fbf6c --- api/system-current.txt | 2 +- core/java/android/content/Context.java | 6 +++--- .../com/android/server/wm/ActivityTaskManagerService.java | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/api/system-current.txt b/api/system-current.txt index b449b2e739e74..0b6f802222d71 100755 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -1608,7 +1608,7 @@ package android.content { method public abstract void sendBroadcast(android.content.Intent, @Nullable String, @Nullable android.os.Bundle); method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract void sendBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, @Nullable String, @Nullable android.os.Bundle); method public abstract void sendOrderedBroadcast(@NonNull android.content.Intent, @Nullable String, @Nullable android.os.Bundle, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle); - method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public void startActivityAsUser(@NonNull @RequiresPermission android.content.Intent, @NonNull android.os.UserHandle); + method @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public void startActivityAsUser(@NonNull @RequiresPermission android.content.Intent, @NonNull android.os.UserHandle); field public static final String APP_INTEGRITY_SERVICE = "app_integrity"; field public static final String APP_PREDICTION_SERVICE = "app_prediction"; field public static final String BACKUP_SERVICE = "backup"; diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index 85027d9a1e18d..870bfdd3937ed 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -1800,7 +1800,7 @@ public abstract class Context { * @throws ActivityNotFoundException   * @hide */ - @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) + @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) @SystemApi public void startActivityAsUser(@RequiresPermission @NonNull Intent intent, @NonNull UserHandle user) { @@ -1848,7 +1848,7 @@ public abstract class Context { * @throws ActivityNotFoundException   * @hide */ - @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) + @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) @UnsupportedAppUsage public void startActivityAsUser(@RequiresPermission Intent intent, @Nullable Bundle options, UserHandle userId) { @@ -1954,7 +1954,7 @@ public abstract class Context { * @see #startActivities(Intent[]) * @see PackageManager#resolveActivity */ - @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) + @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public int startActivitiesAsUser(Intent[] intents, Bundle options, UserHandle userHandle) { throw new RuntimeException("Not implemented. Must override in a subclass."); } diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index f0bc4129f4efc..2d26820bdcc8a 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -28,7 +28,7 @@ import static android.Manifest.permission.REMOVE_TASKS; import static android.Manifest.permission.START_TASKS_FROM_RECENTS; import static android.Manifest.permission.STOP_APP_SWITCHES; import static android.app.ActivityManager.LOCK_TASK_MODE_NONE; -import static android.app.ActivityManagerInternal.ALLOW_FULL_ONLY; +import static android.app.ActivityManagerInternal.ALLOW_NON_FULL; import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static android.app.ActivityTaskManager.RESIZE_MODE_PRESERVE_WINDOW; import static android.app.ActivityTaskManager.SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT; @@ -1419,7 +1419,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { int handleIncomingUser(int callingPid, int callingUid, int userId, String name) { return mAmInternal.handleIncomingUser(callingPid, callingUid, userId, false /* allowAll */, - ALLOW_FULL_ONLY, name, null /* callerPackage */); + ALLOW_NON_FULL, name, null /* callerPackage */); } @Override