Loading core/java/android/app/Activity.java +7 −6 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.annotation.MainThread; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SpecialUsers.CanBeCURRENT; import android.annotation.StyleRes; import android.annotation.SuppressLint; import android.annotation.SystemApi; Loading Loading @@ -6096,7 +6097,7 @@ public class Activity extends ContextThemeWrapper @SystemApi @RequiresPermission(anyOf = {INTERACT_ACROSS_USERS, INTERACT_ACROSS_USERS_FULL}) public void startActivityForResultAsUser(@NonNull Intent intent, int requestCode, @NonNull UserHandle user) { @NonNull @CanBeCURRENT UserHandle user) { startActivityForResultAsUser(intent, requestCode, null, user); } Loading Loading @@ -6135,7 +6136,7 @@ public class Activity extends ContextThemeWrapper @SystemApi @RequiresPermission(anyOf = {INTERACT_ACROSS_USERS, INTERACT_ACROSS_USERS_FULL}) public void startActivityForResultAsUser(@NonNull Intent intent, int requestCode, @Nullable Bundle options, @NonNull UserHandle user) { @Nullable Bundle options, @NonNull @CanBeCURRENT UserHandle user) { startActivityForResultAsUser(intent, mEmbeddedID, requestCode, options, user); } Loading Loading @@ -6175,7 +6176,7 @@ public class Activity extends ContextThemeWrapper @RequiresPermission(anyOf = {INTERACT_ACROSS_USERS, INTERACT_ACROSS_USERS_FULL}) public void startActivityForResultAsUser(@NonNull Intent intent, @NonNull String resultWho, int requestCode, @Nullable Bundle options, @NonNull UserHandle user) { @Nullable Bundle options, @NonNull @CanBeCURRENT UserHandle user) { if (mParent != null) { throw new RuntimeException("Can't be called from a child"); } Loading Loading @@ -6205,7 +6206,7 @@ public class Activity extends ContextThemeWrapper * @hide Implement to provide correct calling token. */ @Override public void startActivityAsUser(Intent intent, UserHandle user) { public void startActivityAsUser(Intent intent, @CanBeCURRENT UserHandle user) { startActivityAsUser(intent, null, user); } Loading @@ -6225,7 +6226,7 @@ public class Activity extends ContextThemeWrapper */ @RequiresPermission(anyOf = {INTERACT_ACROSS_USERS, INTERACT_ACROSS_USERS_FULL}) public void startActivityAsUser(@NonNull Intent intent, @Nullable Bundle options, @NonNull UserHandle user) { @Nullable Bundle options, @NonNull @CanBeCURRENT UserHandle user) { if (mParent != null) { throw new RuntimeException("Can't be called from a child"); } Loading Loading @@ -6818,7 +6819,7 @@ public class Activity extends ContextThemeWrapper private void startActivityAsUserFromFragment(@NonNull Fragment fragment, @RequiresPermission Intent intent, int requestCode, @Nullable Bundle options, UserHandle user) { @CanBeCURRENT UserHandle user) { startActivityForResultAsUser(intent, fragment.mWho, requestCode, options, user); } Loading core/java/android/app/ActivityManager.java +22 −12 Original line number Diff line number Diff line Loading @@ -31,6 +31,9 @@ import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SpecialUsers.CanBeALL; import android.annotation.SpecialUsers.CanBeCURRENT; import android.annotation.SpecialUsers.CannotBeSpecialUser; import android.annotation.SuppressLint; import android.annotation.SystemApi; import android.annotation.SystemService; Loading Loading @@ -2345,7 +2348,8 @@ public class ActivityManager { /** @hide */ @UnsupportedAppUsage public static Bitmap loadTaskDescriptionIcon(String iconFilename, int userId) { public static Bitmap loadTaskDescriptionIcon(String iconFilename, @CanBeCURRENT @UserIdInt int userId) { if (iconFilename != null) { try { return getTaskService().getTaskDescriptionIcon(iconFilename, Loading Loading @@ -4262,7 +4266,8 @@ public class ActivityManager { * @return Returns true if successful. * @hide */ public boolean setProcessMemoryTrimLevel(String process, int userId, int level) { public boolean setProcessMemoryTrimLevel( String process, @CanBeALL @CanBeCURRENT @UserIdInt int userId, int level) { try { return getService().setProcessMemoryTrimLevel(process, userId, level); Loading Loading @@ -4950,7 +4955,8 @@ public class ActivityManager { * services, removing their alarms, etc. */ @UnsupportedAppUsage public void forceStopPackageAsUser(String packageName, int userId) { public void forceStopPackageAsUser(String packageName, @CanBeALL @CanBeCURRENT @UserIdInt int userId) { try { getService().forceStopPackage(packageName, userId); } catch (RemoteException e) { Loading @@ -4975,7 +4981,8 @@ public class ActivityManager { * @hide */ @RequiresPermission(Manifest.permission.FORCE_STOP_PACKAGES) public void forceStopPackageAsUserEvenWhenStopping(String packageName, @UserIdInt int userId) { public void forceStopPackageAsUserEvenWhenStopping(String packageName, @CanBeALL @CanBeCURRENT @UserIdInt int userId) { try { getService().forceStopPackageEvenWhenStopping(packageName, userId); } catch (RemoteException e) { Loading Loading @@ -5460,7 +5467,7 @@ public class ActivityManager { */ @Nullable @RequiresPermission(Manifest.permission.MANAGE_USERS) public String getSwitchingFromUserMessage(@UserIdInt int userId) { public String getSwitchingFromUserMessage(@CannotBeSpecialUser @UserIdInt int userId) { try { return getService().getSwitchingFromUserMessage(userId); } catch (RemoteException re) { Loading @@ -5475,7 +5482,7 @@ public class ActivityManager { */ @Nullable @RequiresPermission(Manifest.permission.MANAGE_USERS) public String getSwitchingToUserMessage(@UserIdInt int userId) { public String getSwitchingToUserMessage(@CannotBeSpecialUser @UserIdInt int userId) { try { return getService().getSwitchingToUserMessage(userId); } catch (RemoteException re) { Loading Loading @@ -5729,7 +5736,8 @@ public class ActivityManager { /** * @hide */ public static void broadcastStickyIntent(Intent intent, int userId) { public static void broadcastStickyIntent(Intent intent, @CanBeALL @CanBeCURRENT @UserIdInt int userId) { broadcastStickyIntent(intent, AppOpsManager.OP_NONE, null, userId); } Loading @@ -5738,7 +5746,8 @@ public class ActivityManager { * * @hide */ public static void broadcastStickyIntent(Intent intent, int appOp, int userId) { public static void broadcastStickyIntent(Intent intent, int appOp, @CanBeALL @CanBeCURRENT @UserIdInt int userId) { broadcastStickyIntent(intent, appOp, null, userId); } Loading @@ -5747,7 +5756,8 @@ public class ActivityManager { * * @hide */ public static void broadcastStickyIntent(Intent intent, int appOp, Bundle options, int userId) { public static void broadcastStickyIntent(Intent intent, int appOp, Bundle options, @CanBeALL @CanBeCURRENT @UserIdInt int userId) { broadcastStickyIntent(intent, null, appOp, options, userId); } Loading @@ -5757,7 +5767,7 @@ public class ActivityManager { * @hide */ public static void broadcastStickyIntent(Intent intent, String[] excludedPackages, int appOp, Bundle options, int userId) { int appOp, Bundle options, @CanBeALL @CanBeCURRENT @UserIdInt int userId) { try { getService().broadcastIntentWithFeature( null, null, intent, null, null, Activity.RESULT_OK, null, null, Loading Loading @@ -6018,7 +6028,7 @@ public class ActivityManager { android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS }) public boolean isProfileForeground(@NonNull UserHandle userHandle) { public boolean isProfileForeground(@NonNull @CannotBeSpecialUser UserHandle userHandle) { UserManager userManager = mContext.getSystemService(UserManager.class); if (userManager != null) { for (UserInfo userInfo : userManager.getProfiles(getCurrentUser())) { Loading Loading @@ -6316,7 +6326,7 @@ public class ActivityManager { * @hide */ @RequiresPermission(Manifest.permission.SET_THEME_OVERLAY_CONTROLLER_READY) public void setThemeOverlayReady(@UserIdInt int userId) { public void setThemeOverlayReady(@CannotBeSpecialUser @UserIdInt int userId) { try { getService().setThemeOverlayReady(userId); } catch (RemoteException e) { Loading core/java/android/app/ActivityManagerInternal.java +3 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.annotation.Nullable; import android.annotation.PermissionMethod; import android.annotation.PermissionName; import android.annotation.SpecialUsers.CanBeALL; import android.annotation.SpecialUsers.CanBeCURRENT; import android.annotation.UserIdInt; import android.app.ActivityManager.ProcessCapability; import android.app.ActivityManager.RestrictionLevel; Loading Loading @@ -869,7 +870,7 @@ public abstract class ActivityManagerInternal { public abstract int broadcastIntent(Intent intent, IIntentReceiver resultTo, String[] requiredPermissions, boolean serialized, int userId, int[] appIdAllowList, @CanBeALL @CanBeCURRENT @UserIdInt int userId, int[] appIdAllowList, @Nullable BiFunction<Integer, Bundle, Bundle> filterExtrasForReceiver, @Nullable Bundle bOptions); Loading @@ -882,7 +883,7 @@ public abstract class ActivityManagerInternal { public abstract int broadcastIntentWithCallback(Intent intent, IIntentReceiver resultTo, String[] requiredPermissions, int userId, int[] appIdAllowList, @CanBeALL @CanBeCURRENT @UserIdInt int userId, int[] appIdAllowList, @Nullable BiFunction<Integer, Bundle, Bundle> filterExtrasForReceiver, @Nullable Bundle bOptions); Loading core/java/android/app/Instrumentation.java +2 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.annotation.FlaggedApi; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SpecialUsers.CanBeCURRENT; import android.compat.annotation.UnsupportedAppUsage; import android.content.ActivityNotFoundException; import android.content.ComponentName; Loading Loading @@ -2206,7 +2207,7 @@ public class Instrumentation { @UnsupportedAppUsage public ActivityResult execStartActivity( Context who, IBinder contextThread, IBinder token, String resultWho, Intent intent, int requestCode, Bundle options, UserHandle user) { Intent intent, int requestCode, Bundle options, @CanBeCURRENT UserHandle user) { if (DEBUG_START_ACTIVITY) { Log.d(TAG, "startActivity: who=" + who + " user=" + user + " intent=" + intent + " requestCode=" + requestCode + " resultWho=" + resultWho Loading core/java/android/content/Context.java +43 −34 Original line number Diff line number Diff line Loading @@ -37,6 +37,8 @@ import android.annotation.PermissionMethod; import android.annotation.PermissionName; import android.annotation.RequiresFeature; import android.annotation.RequiresPermission; import android.annotation.SpecialUsers.CanBeALL; import android.annotation.SpecialUsers.CanBeCURRENT; import android.annotation.StringDef; import android.annotation.StringRes; import android.annotation.StyleRes; Loading Loading @@ -2223,7 +2225,7 @@ public abstract class Context { @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) @SystemApi public void startActivityAsUser(@RequiresPermission @NonNull Intent intent, @NonNull UserHandle user) { @NonNull @CanBeCURRENT UserHandle user) { throw new RuntimeException("Not implemented. Must override in a subclass."); } Loading Loading @@ -2271,7 +2273,7 @@ public abstract class Context { @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) @SystemApi public void startActivityAsUser(@RequiresPermission @NonNull Intent intent, @Nullable Bundle options, @NonNull UserHandle userId) { @Nullable Bundle options, @NonNull @CanBeCURRENT UserHandle userId) { throw new RuntimeException("Not implemented. Must override in a subclass."); } Loading Loading @@ -2375,7 +2377,8 @@ public abstract class Context { * @see PackageManager#resolveActivity */ @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public int startActivitiesAsUser(Intent[] intents, Bundle options, UserHandle userHandle) { public int startActivitiesAsUser(Intent[] intents, Bundle options, @CanBeCURRENT UserHandle userHandle) { throw new RuntimeException("Not implemented. Must override in a subclass."); } Loading Loading @@ -2636,8 +2639,8 @@ public abstract class Context { * @hide */ @SuppressWarnings("HiddenAbstractMethod") public abstract void sendBroadcastAsUserMultiplePermissions(Intent intent, UserHandle user, String[] receiverPermissions); public abstract void sendBroadcastAsUserMultiplePermissions(Intent intent, @CanBeALL @CanBeCURRENT UserHandle user, String[] receiverPermissions); /** * Broadcast the given intent to all interested BroadcastReceivers, allowing Loading Loading @@ -2847,7 +2850,7 @@ public abstract class Context { */ @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract void sendBroadcastAsUser(@RequiresPermission Intent intent, UserHandle user); @CanBeALL @CanBeCURRENT UserHandle user); /** * Version of {@link #sendBroadcast(Intent, String)} that allows you to specify the Loading @@ -2865,7 +2868,7 @@ public abstract class Context { */ @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract void sendBroadcastAsUser(@RequiresPermission Intent intent, UserHandle user, @Nullable String receiverPermission); @CanBeALL @CanBeCURRENT UserHandle user, @Nullable String receiverPermission); /** * Version of {@link #sendBroadcast(Intent, String, Bundle)} that allows you to specify the Loading @@ -2888,7 +2891,8 @@ public abstract class Context { @SystemApi @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract void sendBroadcastAsUser(@RequiresPermission Intent intent, UserHandle user, @Nullable String receiverPermission, @Nullable Bundle options); @CanBeALL @CanBeCURRENT UserHandle user, @Nullable String receiverPermission, @Nullable Bundle options); /** * Version of {@link #sendBroadcast(Intent, String)} that allows you to specify the Loading @@ -2911,7 +2915,8 @@ public abstract class Context { @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) public abstract void sendBroadcastAsUser(@RequiresPermission Intent intent, UserHandle user, @Nullable String receiverPermission, int appOp); @CanBeALL @CanBeCURRENT UserHandle user, @Nullable String receiverPermission, int appOp); /** * Version of Loading Loading @@ -2944,7 +2949,8 @@ public abstract class Context { */ @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract void sendOrderedBroadcastAsUser(@RequiresPermission Intent intent, UserHandle user, @Nullable String receiverPermission, BroadcastReceiver resultReceiver, @CanBeALL @CanBeCURRENT UserHandle user, @Nullable String receiverPermission, BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode, @Nullable String initialData, @Nullable Bundle initialExtras); Loading @@ -2957,10 +2963,10 @@ public abstract class Context { @SuppressWarnings("HiddenAbstractMethod") @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) public abstract void sendOrderedBroadcastAsUser(Intent intent, UserHandle user, @Nullable String receiverPermission, int appOp, BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode, @Nullable String initialData, @Nullable Bundle initialExtras); public abstract void sendOrderedBroadcastAsUser(Intent intent, @CanBeALL @CanBeCURRENT UserHandle user, @Nullable String receiverPermission, int appOp, BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode, @Nullable String initialData, @Nullable Bundle initialExtras); /** * Similar to above but takes an appOp as well, to enforce restrictions, and an options Bundle. Loading @@ -2971,10 +2977,10 @@ public abstract class Context { @SuppressWarnings("HiddenAbstractMethod") @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) @UnsupportedAppUsage public abstract void sendOrderedBroadcastAsUser(Intent intent, UserHandle user, @Nullable String receiverPermission, int appOp, @Nullable Bundle options, BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode, @Nullable String initialData, @Nullable Bundle initialExtras); public abstract void sendOrderedBroadcastAsUser(Intent intent, @CanBeALL @CanBeCURRENT UserHandle user, @Nullable String receiverPermission, int appOp, @Nullable Bundle options, BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode, @Nullable String initialData, @Nullable Bundle initialExtras); /** * Similar to above but takes array of names of permissions that a receiver must hold in order Loading @@ -2987,8 +2993,8 @@ public abstract class Context { @SuppressWarnings("HiddenAbstractMethod") @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public void sendOrderedBroadcastAsUserMultiplePermissions(Intent intent, UserHandle user, String[] receiverPermissions, int appOp, Bundle options, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, @CanBeALL @CanBeCURRENT UserHandle user, String[] receiverPermissions, int appOp, Bundle options, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras) { throw new RuntimeException("Not implemented. Must override in a subclass."); } Loading Loading @@ -3239,7 +3245,7 @@ public abstract class Context { android.Manifest.permission.BROADCAST_STICKY }) public abstract void sendStickyBroadcastAsUser(@RequiresPermission Intent intent, UserHandle user); @CanBeALL @CanBeCURRENT UserHandle user); /** * @hide Loading @@ -3252,7 +3258,7 @@ public abstract class Context { android.Manifest.permission.BROADCAST_STICKY }) public abstract void sendStickyBroadcastAsUser(@RequiresPermission Intent intent, UserHandle user, Bundle options); @CanBeALL @CanBeCURRENT UserHandle user, Bundle options); /** * <p>Version of Loading Loading @@ -3292,7 +3298,7 @@ public abstract class Context { android.Manifest.permission.BROADCAST_STICKY }) public abstract void sendStickyOrderedBroadcastAsUser(@RequiresPermission Intent intent, UserHandle user, BroadcastReceiver resultReceiver, @CanBeALL @CanBeCURRENT UserHandle user, BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode, @Nullable String initialData, @Nullable Bundle initialExtras); Loading Loading @@ -3322,7 +3328,7 @@ public abstract class Context { android.Manifest.permission.BROADCAST_STICKY }) public abstract void removeStickyBroadcastAsUser(@RequiresPermission Intent intent, UserHandle user); @CanBeALL @CanBeCURRENT UserHandle user); /** * Register a BroadcastReceiver to be run in the main activity thread. The Loading Loading @@ -3646,8 +3652,8 @@ public abstract class Context { @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) @UnsupportedAppUsage public abstract Intent registerReceiverAsUser(BroadcastReceiver receiver, UserHandle user, IntentFilter filter, @Nullable String broadcastPermission, @Nullable Handler scheduler); @CanBeALL @CanBeCURRENT UserHandle user, IntentFilter filter, @Nullable String broadcastPermission, @Nullable Handler scheduler); /** * @hide Loading Loading @@ -3687,7 +3693,8 @@ public abstract class Context { @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) @UnsupportedAppUsage public abstract Intent registerReceiverAsUser(BroadcastReceiver receiver, UserHandle user, IntentFilter filter, @Nullable String broadcastPermission, @CanBeALL @CanBeCURRENT UserHandle user, IntentFilter filter, @Nullable String broadcastPermission, @Nullable Handler scheduler, @RegisterReceiverFlags int flags); /** Loading Loading @@ -3871,7 +3878,8 @@ public abstract class Context { @SuppressWarnings("HiddenAbstractMethod") @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract ComponentName startForegroundServiceAsUser(Intent service, UserHandle user); public abstract ComponentName startForegroundServiceAsUser(Intent service, @CanBeCURRENT UserHandle user); /** * Request that a given application service be stopped. If the service is Loading Loading @@ -3917,14 +3925,14 @@ public abstract class Context { @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) @UnsupportedAppUsage public abstract ComponentName startServiceAsUser(Intent service, UserHandle user); public abstract ComponentName startServiceAsUser(Intent service, @CanBeCURRENT UserHandle user); /** * @hide like {@link #stopService(Intent)} but for a specific user. */ @SuppressWarnings("HiddenAbstractMethod") @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract boolean stopServiceAsUser(Intent service, UserHandle user); public abstract boolean stopServiceAsUser(Intent service, @CanBeCURRENT UserHandle user); /** * Connects to an application service, creating it if needed. This defines Loading Loading @@ -4122,7 +4130,7 @@ public abstract class Context { }, conditional = true) public boolean bindServiceAsUser( @NonNull @RequiresPermission Intent service, @NonNull ServiceConnection conn, int flags, @NonNull UserHandle user) { @NonNull @CanBeCURRENT UserHandle user) { throw new RuntimeException("Not implemented. Must override in a subclass."); } Loading @@ -4138,7 +4146,7 @@ public abstract class Context { }, conditional = true) public boolean bindServiceAsUser( @NonNull @RequiresPermission Intent service, @NonNull ServiceConnection conn, @NonNull BindServiceFlags flags, @NonNull UserHandle user) { @NonNull BindServiceFlags flags, @NonNull @CanBeCURRENT UserHandle user) { throw new RuntimeException("Not implemented. Must override in a subclass."); } Loading @@ -4154,7 +4162,7 @@ public abstract class Context { }, conditional = true) @UnsupportedAppUsage(trackingBug = 136728678) public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags, Handler handler, UserHandle user) { Handler handler, @CanBeCURRENT UserHandle user) { throw new RuntimeException("Not implemented. Must override in a subclass."); } Loading @@ -4170,7 +4178,8 @@ public abstract class Context { }, conditional = true) @UnsupportedAppUsage(trackingBug = 136728678) public boolean bindServiceAsUser(@NonNull Intent service, @NonNull ServiceConnection conn, @NonNull BindServiceFlags flags, @NonNull Handler handler, @NonNull UserHandle user) { @NonNull BindServiceFlags flags, @NonNull Handler handler, @NonNull @CanBeCURRENT UserHandle user) { throw new RuntimeException("Not implemented. Must override in a subclass."); } Loading Loading
core/java/android/app/Activity.java +7 −6 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.annotation.MainThread; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SpecialUsers.CanBeCURRENT; import android.annotation.StyleRes; import android.annotation.SuppressLint; import android.annotation.SystemApi; Loading Loading @@ -6096,7 +6097,7 @@ public class Activity extends ContextThemeWrapper @SystemApi @RequiresPermission(anyOf = {INTERACT_ACROSS_USERS, INTERACT_ACROSS_USERS_FULL}) public void startActivityForResultAsUser(@NonNull Intent intent, int requestCode, @NonNull UserHandle user) { @NonNull @CanBeCURRENT UserHandle user) { startActivityForResultAsUser(intent, requestCode, null, user); } Loading Loading @@ -6135,7 +6136,7 @@ public class Activity extends ContextThemeWrapper @SystemApi @RequiresPermission(anyOf = {INTERACT_ACROSS_USERS, INTERACT_ACROSS_USERS_FULL}) public void startActivityForResultAsUser(@NonNull Intent intent, int requestCode, @Nullable Bundle options, @NonNull UserHandle user) { @Nullable Bundle options, @NonNull @CanBeCURRENT UserHandle user) { startActivityForResultAsUser(intent, mEmbeddedID, requestCode, options, user); } Loading Loading @@ -6175,7 +6176,7 @@ public class Activity extends ContextThemeWrapper @RequiresPermission(anyOf = {INTERACT_ACROSS_USERS, INTERACT_ACROSS_USERS_FULL}) public void startActivityForResultAsUser(@NonNull Intent intent, @NonNull String resultWho, int requestCode, @Nullable Bundle options, @NonNull UserHandle user) { @Nullable Bundle options, @NonNull @CanBeCURRENT UserHandle user) { if (mParent != null) { throw new RuntimeException("Can't be called from a child"); } Loading Loading @@ -6205,7 +6206,7 @@ public class Activity extends ContextThemeWrapper * @hide Implement to provide correct calling token. */ @Override public void startActivityAsUser(Intent intent, UserHandle user) { public void startActivityAsUser(Intent intent, @CanBeCURRENT UserHandle user) { startActivityAsUser(intent, null, user); } Loading @@ -6225,7 +6226,7 @@ public class Activity extends ContextThemeWrapper */ @RequiresPermission(anyOf = {INTERACT_ACROSS_USERS, INTERACT_ACROSS_USERS_FULL}) public void startActivityAsUser(@NonNull Intent intent, @Nullable Bundle options, @NonNull UserHandle user) { @Nullable Bundle options, @NonNull @CanBeCURRENT UserHandle user) { if (mParent != null) { throw new RuntimeException("Can't be called from a child"); } Loading Loading @@ -6818,7 +6819,7 @@ public class Activity extends ContextThemeWrapper private void startActivityAsUserFromFragment(@NonNull Fragment fragment, @RequiresPermission Intent intent, int requestCode, @Nullable Bundle options, UserHandle user) { @CanBeCURRENT UserHandle user) { startActivityForResultAsUser(intent, fragment.mWho, requestCode, options, user); } Loading
core/java/android/app/ActivityManager.java +22 −12 Original line number Diff line number Diff line Loading @@ -31,6 +31,9 @@ import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SpecialUsers.CanBeALL; import android.annotation.SpecialUsers.CanBeCURRENT; import android.annotation.SpecialUsers.CannotBeSpecialUser; import android.annotation.SuppressLint; import android.annotation.SystemApi; import android.annotation.SystemService; Loading Loading @@ -2345,7 +2348,8 @@ public class ActivityManager { /** @hide */ @UnsupportedAppUsage public static Bitmap loadTaskDescriptionIcon(String iconFilename, int userId) { public static Bitmap loadTaskDescriptionIcon(String iconFilename, @CanBeCURRENT @UserIdInt int userId) { if (iconFilename != null) { try { return getTaskService().getTaskDescriptionIcon(iconFilename, Loading Loading @@ -4262,7 +4266,8 @@ public class ActivityManager { * @return Returns true if successful. * @hide */ public boolean setProcessMemoryTrimLevel(String process, int userId, int level) { public boolean setProcessMemoryTrimLevel( String process, @CanBeALL @CanBeCURRENT @UserIdInt int userId, int level) { try { return getService().setProcessMemoryTrimLevel(process, userId, level); Loading Loading @@ -4950,7 +4955,8 @@ public class ActivityManager { * services, removing their alarms, etc. */ @UnsupportedAppUsage public void forceStopPackageAsUser(String packageName, int userId) { public void forceStopPackageAsUser(String packageName, @CanBeALL @CanBeCURRENT @UserIdInt int userId) { try { getService().forceStopPackage(packageName, userId); } catch (RemoteException e) { Loading @@ -4975,7 +4981,8 @@ public class ActivityManager { * @hide */ @RequiresPermission(Manifest.permission.FORCE_STOP_PACKAGES) public void forceStopPackageAsUserEvenWhenStopping(String packageName, @UserIdInt int userId) { public void forceStopPackageAsUserEvenWhenStopping(String packageName, @CanBeALL @CanBeCURRENT @UserIdInt int userId) { try { getService().forceStopPackageEvenWhenStopping(packageName, userId); } catch (RemoteException e) { Loading Loading @@ -5460,7 +5467,7 @@ public class ActivityManager { */ @Nullable @RequiresPermission(Manifest.permission.MANAGE_USERS) public String getSwitchingFromUserMessage(@UserIdInt int userId) { public String getSwitchingFromUserMessage(@CannotBeSpecialUser @UserIdInt int userId) { try { return getService().getSwitchingFromUserMessage(userId); } catch (RemoteException re) { Loading @@ -5475,7 +5482,7 @@ public class ActivityManager { */ @Nullable @RequiresPermission(Manifest.permission.MANAGE_USERS) public String getSwitchingToUserMessage(@UserIdInt int userId) { public String getSwitchingToUserMessage(@CannotBeSpecialUser @UserIdInt int userId) { try { return getService().getSwitchingToUserMessage(userId); } catch (RemoteException re) { Loading Loading @@ -5729,7 +5736,8 @@ public class ActivityManager { /** * @hide */ public static void broadcastStickyIntent(Intent intent, int userId) { public static void broadcastStickyIntent(Intent intent, @CanBeALL @CanBeCURRENT @UserIdInt int userId) { broadcastStickyIntent(intent, AppOpsManager.OP_NONE, null, userId); } Loading @@ -5738,7 +5746,8 @@ public class ActivityManager { * * @hide */ public static void broadcastStickyIntent(Intent intent, int appOp, int userId) { public static void broadcastStickyIntent(Intent intent, int appOp, @CanBeALL @CanBeCURRENT @UserIdInt int userId) { broadcastStickyIntent(intent, appOp, null, userId); } Loading @@ -5747,7 +5756,8 @@ public class ActivityManager { * * @hide */ public static void broadcastStickyIntent(Intent intent, int appOp, Bundle options, int userId) { public static void broadcastStickyIntent(Intent intent, int appOp, Bundle options, @CanBeALL @CanBeCURRENT @UserIdInt int userId) { broadcastStickyIntent(intent, null, appOp, options, userId); } Loading @@ -5757,7 +5767,7 @@ public class ActivityManager { * @hide */ public static void broadcastStickyIntent(Intent intent, String[] excludedPackages, int appOp, Bundle options, int userId) { int appOp, Bundle options, @CanBeALL @CanBeCURRENT @UserIdInt int userId) { try { getService().broadcastIntentWithFeature( null, null, intent, null, null, Activity.RESULT_OK, null, null, Loading Loading @@ -6018,7 +6028,7 @@ public class ActivityManager { android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS }) public boolean isProfileForeground(@NonNull UserHandle userHandle) { public boolean isProfileForeground(@NonNull @CannotBeSpecialUser UserHandle userHandle) { UserManager userManager = mContext.getSystemService(UserManager.class); if (userManager != null) { for (UserInfo userInfo : userManager.getProfiles(getCurrentUser())) { Loading Loading @@ -6316,7 +6326,7 @@ public class ActivityManager { * @hide */ @RequiresPermission(Manifest.permission.SET_THEME_OVERLAY_CONTROLLER_READY) public void setThemeOverlayReady(@UserIdInt int userId) { public void setThemeOverlayReady(@CannotBeSpecialUser @UserIdInt int userId) { try { getService().setThemeOverlayReady(userId); } catch (RemoteException e) { Loading
core/java/android/app/ActivityManagerInternal.java +3 −2 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.annotation.Nullable; import android.annotation.PermissionMethod; import android.annotation.PermissionName; import android.annotation.SpecialUsers.CanBeALL; import android.annotation.SpecialUsers.CanBeCURRENT; import android.annotation.UserIdInt; import android.app.ActivityManager.ProcessCapability; import android.app.ActivityManager.RestrictionLevel; Loading Loading @@ -869,7 +870,7 @@ public abstract class ActivityManagerInternal { public abstract int broadcastIntent(Intent intent, IIntentReceiver resultTo, String[] requiredPermissions, boolean serialized, int userId, int[] appIdAllowList, @CanBeALL @CanBeCURRENT @UserIdInt int userId, int[] appIdAllowList, @Nullable BiFunction<Integer, Bundle, Bundle> filterExtrasForReceiver, @Nullable Bundle bOptions); Loading @@ -882,7 +883,7 @@ public abstract class ActivityManagerInternal { public abstract int broadcastIntentWithCallback(Intent intent, IIntentReceiver resultTo, String[] requiredPermissions, int userId, int[] appIdAllowList, @CanBeALL @CanBeCURRENT @UserIdInt int userId, int[] appIdAllowList, @Nullable BiFunction<Integer, Bundle, Bundle> filterExtrasForReceiver, @Nullable Bundle bOptions); Loading
core/java/android/app/Instrumentation.java +2 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.annotation.FlaggedApi; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SpecialUsers.CanBeCURRENT; import android.compat.annotation.UnsupportedAppUsage; import android.content.ActivityNotFoundException; import android.content.ComponentName; Loading Loading @@ -2206,7 +2207,7 @@ public class Instrumentation { @UnsupportedAppUsage public ActivityResult execStartActivity( Context who, IBinder contextThread, IBinder token, String resultWho, Intent intent, int requestCode, Bundle options, UserHandle user) { Intent intent, int requestCode, Bundle options, @CanBeCURRENT UserHandle user) { if (DEBUG_START_ACTIVITY) { Log.d(TAG, "startActivity: who=" + who + " user=" + user + " intent=" + intent + " requestCode=" + requestCode + " resultWho=" + resultWho Loading
core/java/android/content/Context.java +43 −34 Original line number Diff line number Diff line Loading @@ -37,6 +37,8 @@ import android.annotation.PermissionMethod; import android.annotation.PermissionName; import android.annotation.RequiresFeature; import android.annotation.RequiresPermission; import android.annotation.SpecialUsers.CanBeALL; import android.annotation.SpecialUsers.CanBeCURRENT; import android.annotation.StringDef; import android.annotation.StringRes; import android.annotation.StyleRes; Loading Loading @@ -2223,7 +2225,7 @@ public abstract class Context { @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) @SystemApi public void startActivityAsUser(@RequiresPermission @NonNull Intent intent, @NonNull UserHandle user) { @NonNull @CanBeCURRENT UserHandle user) { throw new RuntimeException("Not implemented. Must override in a subclass."); } Loading Loading @@ -2271,7 +2273,7 @@ public abstract class Context { @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) @SystemApi public void startActivityAsUser(@RequiresPermission @NonNull Intent intent, @Nullable Bundle options, @NonNull UserHandle userId) { @Nullable Bundle options, @NonNull @CanBeCURRENT UserHandle userId) { throw new RuntimeException("Not implemented. Must override in a subclass."); } Loading Loading @@ -2375,7 +2377,8 @@ public abstract class Context { * @see PackageManager#resolveActivity */ @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public int startActivitiesAsUser(Intent[] intents, Bundle options, UserHandle userHandle) { public int startActivitiesAsUser(Intent[] intents, Bundle options, @CanBeCURRENT UserHandle userHandle) { throw new RuntimeException("Not implemented. Must override in a subclass."); } Loading Loading @@ -2636,8 +2639,8 @@ public abstract class Context { * @hide */ @SuppressWarnings("HiddenAbstractMethod") public abstract void sendBroadcastAsUserMultiplePermissions(Intent intent, UserHandle user, String[] receiverPermissions); public abstract void sendBroadcastAsUserMultiplePermissions(Intent intent, @CanBeALL @CanBeCURRENT UserHandle user, String[] receiverPermissions); /** * Broadcast the given intent to all interested BroadcastReceivers, allowing Loading Loading @@ -2847,7 +2850,7 @@ public abstract class Context { */ @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract void sendBroadcastAsUser(@RequiresPermission Intent intent, UserHandle user); @CanBeALL @CanBeCURRENT UserHandle user); /** * Version of {@link #sendBroadcast(Intent, String)} that allows you to specify the Loading @@ -2865,7 +2868,7 @@ public abstract class Context { */ @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract void sendBroadcastAsUser(@RequiresPermission Intent intent, UserHandle user, @Nullable String receiverPermission); @CanBeALL @CanBeCURRENT UserHandle user, @Nullable String receiverPermission); /** * Version of {@link #sendBroadcast(Intent, String, Bundle)} that allows you to specify the Loading @@ -2888,7 +2891,8 @@ public abstract class Context { @SystemApi @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract void sendBroadcastAsUser(@RequiresPermission Intent intent, UserHandle user, @Nullable String receiverPermission, @Nullable Bundle options); @CanBeALL @CanBeCURRENT UserHandle user, @Nullable String receiverPermission, @Nullable Bundle options); /** * Version of {@link #sendBroadcast(Intent, String)} that allows you to specify the Loading @@ -2911,7 +2915,8 @@ public abstract class Context { @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) public abstract void sendBroadcastAsUser(@RequiresPermission Intent intent, UserHandle user, @Nullable String receiverPermission, int appOp); @CanBeALL @CanBeCURRENT UserHandle user, @Nullable String receiverPermission, int appOp); /** * Version of Loading Loading @@ -2944,7 +2949,8 @@ public abstract class Context { */ @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract void sendOrderedBroadcastAsUser(@RequiresPermission Intent intent, UserHandle user, @Nullable String receiverPermission, BroadcastReceiver resultReceiver, @CanBeALL @CanBeCURRENT UserHandle user, @Nullable String receiverPermission, BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode, @Nullable String initialData, @Nullable Bundle initialExtras); Loading @@ -2957,10 +2963,10 @@ public abstract class Context { @SuppressWarnings("HiddenAbstractMethod") @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) public abstract void sendOrderedBroadcastAsUser(Intent intent, UserHandle user, @Nullable String receiverPermission, int appOp, BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode, @Nullable String initialData, @Nullable Bundle initialExtras); public abstract void sendOrderedBroadcastAsUser(Intent intent, @CanBeALL @CanBeCURRENT UserHandle user, @Nullable String receiverPermission, int appOp, BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode, @Nullable String initialData, @Nullable Bundle initialExtras); /** * Similar to above but takes an appOp as well, to enforce restrictions, and an options Bundle. Loading @@ -2971,10 +2977,10 @@ public abstract class Context { @SuppressWarnings("HiddenAbstractMethod") @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) @UnsupportedAppUsage public abstract void sendOrderedBroadcastAsUser(Intent intent, UserHandle user, @Nullable String receiverPermission, int appOp, @Nullable Bundle options, BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode, @Nullable String initialData, @Nullable Bundle initialExtras); public abstract void sendOrderedBroadcastAsUser(Intent intent, @CanBeALL @CanBeCURRENT UserHandle user, @Nullable String receiverPermission, int appOp, @Nullable Bundle options, BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode, @Nullable String initialData, @Nullable Bundle initialExtras); /** * Similar to above but takes array of names of permissions that a receiver must hold in order Loading @@ -2987,8 +2993,8 @@ public abstract class Context { @SuppressWarnings("HiddenAbstractMethod") @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public void sendOrderedBroadcastAsUserMultiplePermissions(Intent intent, UserHandle user, String[] receiverPermissions, int appOp, Bundle options, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, @CanBeALL @CanBeCURRENT UserHandle user, String[] receiverPermissions, int appOp, Bundle options, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras) { throw new RuntimeException("Not implemented. Must override in a subclass."); } Loading Loading @@ -3239,7 +3245,7 @@ public abstract class Context { android.Manifest.permission.BROADCAST_STICKY }) public abstract void sendStickyBroadcastAsUser(@RequiresPermission Intent intent, UserHandle user); @CanBeALL @CanBeCURRENT UserHandle user); /** * @hide Loading @@ -3252,7 +3258,7 @@ public abstract class Context { android.Manifest.permission.BROADCAST_STICKY }) public abstract void sendStickyBroadcastAsUser(@RequiresPermission Intent intent, UserHandle user, Bundle options); @CanBeALL @CanBeCURRENT UserHandle user, Bundle options); /** * <p>Version of Loading Loading @@ -3292,7 +3298,7 @@ public abstract class Context { android.Manifest.permission.BROADCAST_STICKY }) public abstract void sendStickyOrderedBroadcastAsUser(@RequiresPermission Intent intent, UserHandle user, BroadcastReceiver resultReceiver, @CanBeALL @CanBeCURRENT UserHandle user, BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode, @Nullable String initialData, @Nullable Bundle initialExtras); Loading Loading @@ -3322,7 +3328,7 @@ public abstract class Context { android.Manifest.permission.BROADCAST_STICKY }) public abstract void removeStickyBroadcastAsUser(@RequiresPermission Intent intent, UserHandle user); @CanBeALL @CanBeCURRENT UserHandle user); /** * Register a BroadcastReceiver to be run in the main activity thread. The Loading Loading @@ -3646,8 +3652,8 @@ public abstract class Context { @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) @UnsupportedAppUsage public abstract Intent registerReceiverAsUser(BroadcastReceiver receiver, UserHandle user, IntentFilter filter, @Nullable String broadcastPermission, @Nullable Handler scheduler); @CanBeALL @CanBeCURRENT UserHandle user, IntentFilter filter, @Nullable String broadcastPermission, @Nullable Handler scheduler); /** * @hide Loading Loading @@ -3687,7 +3693,8 @@ public abstract class Context { @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) @UnsupportedAppUsage public abstract Intent registerReceiverAsUser(BroadcastReceiver receiver, UserHandle user, IntentFilter filter, @Nullable String broadcastPermission, @CanBeALL @CanBeCURRENT UserHandle user, IntentFilter filter, @Nullable String broadcastPermission, @Nullable Handler scheduler, @RegisterReceiverFlags int flags); /** Loading Loading @@ -3871,7 +3878,8 @@ public abstract class Context { @SuppressWarnings("HiddenAbstractMethod") @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract ComponentName startForegroundServiceAsUser(Intent service, UserHandle user); public abstract ComponentName startForegroundServiceAsUser(Intent service, @CanBeCURRENT UserHandle user); /** * Request that a given application service be stopped. If the service is Loading Loading @@ -3917,14 +3925,14 @@ public abstract class Context { @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) @UnsupportedAppUsage public abstract ComponentName startServiceAsUser(Intent service, UserHandle user); public abstract ComponentName startServiceAsUser(Intent service, @CanBeCURRENT UserHandle user); /** * @hide like {@link #stopService(Intent)} but for a specific user. */ @SuppressWarnings("HiddenAbstractMethod") @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract boolean stopServiceAsUser(Intent service, UserHandle user); public abstract boolean stopServiceAsUser(Intent service, @CanBeCURRENT UserHandle user); /** * Connects to an application service, creating it if needed. This defines Loading Loading @@ -4122,7 +4130,7 @@ public abstract class Context { }, conditional = true) public boolean bindServiceAsUser( @NonNull @RequiresPermission Intent service, @NonNull ServiceConnection conn, int flags, @NonNull UserHandle user) { @NonNull @CanBeCURRENT UserHandle user) { throw new RuntimeException("Not implemented. Must override in a subclass."); } Loading @@ -4138,7 +4146,7 @@ public abstract class Context { }, conditional = true) public boolean bindServiceAsUser( @NonNull @RequiresPermission Intent service, @NonNull ServiceConnection conn, @NonNull BindServiceFlags flags, @NonNull UserHandle user) { @NonNull BindServiceFlags flags, @NonNull @CanBeCURRENT UserHandle user) { throw new RuntimeException("Not implemented. Must override in a subclass."); } Loading @@ -4154,7 +4162,7 @@ public abstract class Context { }, conditional = true) @UnsupportedAppUsage(trackingBug = 136728678) public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags, Handler handler, UserHandle user) { Handler handler, @CanBeCURRENT UserHandle user) { throw new RuntimeException("Not implemented. Must override in a subclass."); } Loading @@ -4170,7 +4178,8 @@ public abstract class Context { }, conditional = true) @UnsupportedAppUsage(trackingBug = 136728678) public boolean bindServiceAsUser(@NonNull Intent service, @NonNull ServiceConnection conn, @NonNull BindServiceFlags flags, @NonNull Handler handler, @NonNull UserHandle user) { @NonNull BindServiceFlags flags, @NonNull Handler handler, @NonNull @CanBeCURRENT UserHandle user) { throw new RuntimeException("Not implemented. Must override in a subclass."); } Loading