From b66b090814161f692d384acc5b5d940813691c4f Mon Sep 17 00:00:00 2001 From: Charles Chen Date: Fri, 4 Mar 2022 06:35:59 +0000 Subject: [PATCH] Revert "Revert "Promote startActivityAsUser to SystemApi"" This reverts commit 07f7f3ff5b1ec96cb8a9e7e0bfcbb0769157a3a2. Currently, Context#startActivityAsUser(Intent, UserHandle) has already been a System API. This CL furthur makes startActivityAsUser with ActivityOptions a System API. This is enssential to launch an Activity to the secondary display by setting launched display ID in ActivityOptions. This also align the behavior of startActivity. We made all versions of startActivity public APIs. Bug: 199829817 Change-Id: I334c2a98483e709559162ad64f3b69cbd3b615d2 Test: atest AnnotationTest CTS-Coverage-Bug: 222189824 --- core/api/system-current.txt | 2 +- core/java/android/app/Activity.java | 1 - core/java/android/content/Context.java | 6 +++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/core/api/system-current.txt b/core/api/system-current.txt index a3e455032b9dc..26a29d007469a 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -468,7 +468,6 @@ package android.app { method public boolean convertToTranslucent(android.app.Activity.TranslucentConversionListener, android.app.ActivityOptions); method @Deprecated public boolean isBackgroundVisibleBehind(); method @Deprecated public void onBackgroundVisibleBehindChanged(boolean); - method @RequiresPermission(anyOf={android.Manifest.permission.INTERACT_ACROSS_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}) public void startActivityAsUser(@NonNull android.content.Intent, @Nullable android.os.Bundle, @NonNull android.os.UserHandle); method @RequiresPermission(anyOf={android.Manifest.permission.INTERACT_ACROSS_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}) public void startActivityForResultAsUser(@NonNull android.content.Intent, int, @NonNull android.os.UserHandle); method @RequiresPermission(anyOf={android.Manifest.permission.INTERACT_ACROSS_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}) public void startActivityForResultAsUser(@NonNull android.content.Intent, int, @Nullable android.os.Bundle, @NonNull android.os.UserHandle); method @RequiresPermission(anyOf={android.Manifest.permission.INTERACT_ACROSS_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}) public void startActivityForResultAsUser(@NonNull android.content.Intent, @NonNull String, int, @Nullable android.os.Bundle, @NonNull android.os.UserHandle); @@ -2945,6 +2944,7 @@ package android.content { method public void sendBroadcastMultiplePermissions(@NonNull android.content.Intent, @NonNull String[], @Nullable android.app.BroadcastOptions); 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) 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, @Nullable android.os.Bundle, @NonNull android.os.UserHandle); field public static final String AMBIENT_CONTEXT_SERVICE = "ambient_context"; field public static final String APP_HIBERNATION_SERVICE = "app_hibernation"; field public static final String APP_INTEGRITY_SERVICE = "app_integrity"; diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index bc979fc4af84b..643f2bb1aeeec 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -5663,7 +5663,6 @@ public class Activity extends ContextThemeWrapper * @throws ActivityNotFoundException   * @hide */ - @SystemApi @RequiresPermission(anyOf = {INTERACT_ACROSS_USERS, INTERACT_ACROSS_USERS_FULL}) public void startActivityAsUser(@NonNull Intent intent, @Nullable Bundle options, @NonNull UserHandle user) { diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index 2bda020192d5b..60efb4d3ec81e 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -2011,9 +2011,9 @@ public abstract class Context { * @hide */ @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) - @UnsupportedAppUsage - public void startActivityAsUser(@RequiresPermission Intent intent, @Nullable Bundle options, - UserHandle userId) { + @SystemApi + public void startActivityAsUser(@RequiresPermission @NonNull Intent intent, + @Nullable Bundle options, @NonNull UserHandle userId) { throw new RuntimeException("Not implemented. Must override in a subclass."); }