Loading core/api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -3775,6 +3775,7 @@ package android.content { method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public android.content.Intent registerReceiverForAllUsers(@Nullable android.content.BroadcastReceiver, @NonNull android.content.IntentFilter, @Nullable String, @Nullable android.os.Handler, int); 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 void sendBroadcastMultiplePermissions(@NonNull android.content.Intent, @NonNull String[], @Nullable android.app.BroadcastOptions); method @FlaggedApi("android.os.ordered_broadcast_multiple_permissions") public void sendOrderedBroadcastMultiplePermissions(@NonNull android.content.Intent, @NonNull String[], @Nullable String, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle, @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"; core/java/android/app/ContextImpl.java +25 −2 Original line number Diff line number Diff line Loading @@ -1552,6 +1552,17 @@ class ContextImpl extends Context { public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission, int appOp, Bundle options, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras) { String[] receiverPermissions = receiverPermission == null ? null : new String[] {receiverPermission}; sendOrderedBroadcastAsUserMultiplePermissions(intent, user, receiverPermissions, appOp, options, resultReceiver, scheduler, initialCode, initialData, initialExtras); } @Override public void sendOrderedBroadcastAsUserMultiplePermissions(Intent intent, UserHandle user, String[] receiverPermissions, int appOp, Bundle options, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras) { IIntentReceiver rd = null; if (resultReceiver != null) { if (mPackageInfo != null) { Loading @@ -1571,8 +1582,6 @@ class ContextImpl extends Context { } } String resolvedType = intent.resolveTypeIfNeeded(getContentResolver()); String[] receiverPermissions = receiverPermission == null ? null : new String[] {receiverPermission}; try { intent.prepareToLeaveProcess(this); ActivityManager.getService().broadcastIntentWithFeature( Loading @@ -1598,6 +1607,20 @@ class ContextImpl extends Context { initialExtras); } @Override public void sendOrderedBroadcastMultiplePermissions(Intent intent, String[] receiverPermissions, String receiverAppOp, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, @Nullable Bundle initialExtras, @Nullable Bundle options) { int intAppOp = AppOpsManager.OP_NONE; if (!TextUtils.isEmpty(receiverAppOp)) { intAppOp = AppOpsManager.strOpToOp(receiverAppOp); } sendOrderedBroadcastAsUserMultiplePermissions(intent, getUser(), receiverPermissions, intAppOp, options, resultReceiver, scheduler, initialCode, initialData, initialExtras); } @Override public void sendOrderedBroadcast(Intent intent, int initialCode, String receiverPermission, String receiverAppOp, BroadcastReceiver resultReceiver, Handler scheduler, Loading core/java/android/content/Context.java +30 −0 Original line number Diff line number Diff line Loading @@ -2915,6 +2915,21 @@ public abstract class Context { 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 * to receive your broadcast. If empty, no permissions are required. * * @see #sendOrderedBroadcastAsUser(Intent, UserHandle, String, * BroadcastReceiver, Handler, int, String, Bundle) * @hide */ @SuppressWarnings("HiddenAbstractMethod") @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract void sendOrderedBroadcastAsUserMultiplePermissions(Intent intent, UserHandle user, String[] receiverPermissions, int appOp, Bundle options, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras); /** * Version of * {@link #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Loading Loading @@ -2996,6 +3011,21 @@ public abstract class Context { throw new RuntimeException("Not implemented. Must override in a subclass."); } /** * Like {@link #sendOrderedBroadcast(Intent, String, String, BroadcastReceiver, Handler, int, * String, Bundle)}, but also allows specification of a list of multiple permissions. * @hide */ @FlaggedApi(Flags.FLAG_ORDERED_BROADCAST_MULTIPLE_PERMISSIONS) @SystemApi public void sendOrderedBroadcastMultiplePermissions( @NonNull Intent intent, @NonNull String[] receiverPermissions, @Nullable String receiverAppOp, @Nullable BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode, @Nullable String initialData, @Nullable Bundle initialExtras, @Nullable Bundle options) { throw new RuntimeException("Not implemented. Must override in a subclass."); } /** * <p>Perform a {@link #sendBroadcast(Intent)} that is "sticky," meaning the * Intent you are sending stays around after the broadcast is complete, Loading core/java/android/content/ContextWrapper.java +21 −0 Original line number Diff line number Diff line Loading @@ -652,6 +652,16 @@ public class ContextWrapper extends Context { resultReceiver, scheduler, initialCode, initialData, initialExtras); } /** @hide */ @Override public void sendOrderedBroadcastAsUserMultiplePermissions(Intent intent, UserHandle user, @Nullable String[] receiverPermission, int appOp, @Nullable Bundle options, @Nullable BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode, @Nullable String initialData, @Nullable Bundle initialExtras) { mBase.sendOrderedBroadcastAsUserMultiplePermissions(intent, user, receiverPermission, appOp, options, resultReceiver, scheduler, initialCode, initialData, initialExtras); } @Override public void sendOrderedBroadcast(@RequiresPermission @NonNull Intent intent, @Nullable String receiverPermission, @Nullable String receiverAppOp, Loading @@ -661,6 +671,17 @@ public class ContextWrapper extends Context { scheduler, initialCode, initialData, initialExtras); } /** @hide */ @Override public void sendOrderedBroadcastMultiplePermissions( @NonNull Intent intent, @NonNull String[] receiverPermissions, @Nullable String receiverAppOp, @Nullable BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode, @Nullable String initialData, @Nullable Bundle initialExtras, @Nullable Bundle options) { mBase.sendOrderedBroadcastMultiplePermissions(intent, receiverPermissions, receiverAppOp, resultReceiver, scheduler, initialCode, initialData, initialExtras, options); } @Override public void sendOrderedBroadcast(@RequiresPermission @NonNull Intent intent, int initialCode, @Nullable String receiverPermission, @Nullable String receiverAppOp, Loading core/java/android/os/flags.aconfig +8 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,14 @@ flag { bug: "302189431" } flag { name: "ordered_broadcast_multiple_permissions" is_exported: true namespace: "bluetooth" description: "Guards the Context.sendOrderedBroadcastMultiplePermissions API" bug: "345802719" } flag { name: "battery_saver_supported_check_api" is_exported: true Loading Loading
core/api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -3775,6 +3775,7 @@ package android.content { method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) public android.content.Intent registerReceiverForAllUsers(@Nullable android.content.BroadcastReceiver, @NonNull android.content.IntentFilter, @Nullable String, @Nullable android.os.Handler, int); 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 void sendBroadcastMultiplePermissions(@NonNull android.content.Intent, @NonNull String[], @Nullable android.app.BroadcastOptions); method @FlaggedApi("android.os.ordered_broadcast_multiple_permissions") public void sendOrderedBroadcastMultiplePermissions(@NonNull android.content.Intent, @NonNull String[], @Nullable String, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle, @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";
core/java/android/app/ContextImpl.java +25 −2 Original line number Diff line number Diff line Loading @@ -1552,6 +1552,17 @@ class ContextImpl extends Context { public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission, int appOp, Bundle options, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras) { String[] receiverPermissions = receiverPermission == null ? null : new String[] {receiverPermission}; sendOrderedBroadcastAsUserMultiplePermissions(intent, user, receiverPermissions, appOp, options, resultReceiver, scheduler, initialCode, initialData, initialExtras); } @Override public void sendOrderedBroadcastAsUserMultiplePermissions(Intent intent, UserHandle user, String[] receiverPermissions, int appOp, Bundle options, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras) { IIntentReceiver rd = null; if (resultReceiver != null) { if (mPackageInfo != null) { Loading @@ -1571,8 +1582,6 @@ class ContextImpl extends Context { } } String resolvedType = intent.resolveTypeIfNeeded(getContentResolver()); String[] receiverPermissions = receiverPermission == null ? null : new String[] {receiverPermission}; try { intent.prepareToLeaveProcess(this); ActivityManager.getService().broadcastIntentWithFeature( Loading @@ -1598,6 +1607,20 @@ class ContextImpl extends Context { initialExtras); } @Override public void sendOrderedBroadcastMultiplePermissions(Intent intent, String[] receiverPermissions, String receiverAppOp, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, @Nullable Bundle initialExtras, @Nullable Bundle options) { int intAppOp = AppOpsManager.OP_NONE; if (!TextUtils.isEmpty(receiverAppOp)) { intAppOp = AppOpsManager.strOpToOp(receiverAppOp); } sendOrderedBroadcastAsUserMultiplePermissions(intent, getUser(), receiverPermissions, intAppOp, options, resultReceiver, scheduler, initialCode, initialData, initialExtras); } @Override public void sendOrderedBroadcast(Intent intent, int initialCode, String receiverPermission, String receiverAppOp, BroadcastReceiver resultReceiver, Handler scheduler, Loading
core/java/android/content/Context.java +30 −0 Original line number Diff line number Diff line Loading @@ -2915,6 +2915,21 @@ public abstract class Context { 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 * to receive your broadcast. If empty, no permissions are required. * * @see #sendOrderedBroadcastAsUser(Intent, UserHandle, String, * BroadcastReceiver, Handler, int, String, Bundle) * @hide */ @SuppressWarnings("HiddenAbstractMethod") @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public abstract void sendOrderedBroadcastAsUserMultiplePermissions(Intent intent, UserHandle user, String[] receiverPermissions, int appOp, Bundle options, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras); /** * Version of * {@link #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Loading Loading @@ -2996,6 +3011,21 @@ public abstract class Context { throw new RuntimeException("Not implemented. Must override in a subclass."); } /** * Like {@link #sendOrderedBroadcast(Intent, String, String, BroadcastReceiver, Handler, int, * String, Bundle)}, but also allows specification of a list of multiple permissions. * @hide */ @FlaggedApi(Flags.FLAG_ORDERED_BROADCAST_MULTIPLE_PERMISSIONS) @SystemApi public void sendOrderedBroadcastMultiplePermissions( @NonNull Intent intent, @NonNull String[] receiverPermissions, @Nullable String receiverAppOp, @Nullable BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode, @Nullable String initialData, @Nullable Bundle initialExtras, @Nullable Bundle options) { throw new RuntimeException("Not implemented. Must override in a subclass."); } /** * <p>Perform a {@link #sendBroadcast(Intent)} that is "sticky," meaning the * Intent you are sending stays around after the broadcast is complete, Loading
core/java/android/content/ContextWrapper.java +21 −0 Original line number Diff line number Diff line Loading @@ -652,6 +652,16 @@ public class ContextWrapper extends Context { resultReceiver, scheduler, initialCode, initialData, initialExtras); } /** @hide */ @Override public void sendOrderedBroadcastAsUserMultiplePermissions(Intent intent, UserHandle user, @Nullable String[] receiverPermission, int appOp, @Nullable Bundle options, @Nullable BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode, @Nullable String initialData, @Nullable Bundle initialExtras) { mBase.sendOrderedBroadcastAsUserMultiplePermissions(intent, user, receiverPermission, appOp, options, resultReceiver, scheduler, initialCode, initialData, initialExtras); } @Override public void sendOrderedBroadcast(@RequiresPermission @NonNull Intent intent, @Nullable String receiverPermission, @Nullable String receiverAppOp, Loading @@ -661,6 +671,17 @@ public class ContextWrapper extends Context { scheduler, initialCode, initialData, initialExtras); } /** @hide */ @Override public void sendOrderedBroadcastMultiplePermissions( @NonNull Intent intent, @NonNull String[] receiverPermissions, @Nullable String receiverAppOp, @Nullable BroadcastReceiver resultReceiver, @Nullable Handler scheduler, int initialCode, @Nullable String initialData, @Nullable Bundle initialExtras, @Nullable Bundle options) { mBase.sendOrderedBroadcastMultiplePermissions(intent, receiverPermissions, receiverAppOp, resultReceiver, scheduler, initialCode, initialData, initialExtras, options); } @Override public void sendOrderedBroadcast(@RequiresPermission @NonNull Intent intent, int initialCode, @Nullable String receiverPermission, @Nullable String receiverAppOp, Loading
core/java/android/os/flags.aconfig +8 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,14 @@ flag { bug: "302189431" } flag { name: "ordered_broadcast_multiple_permissions" is_exported: true namespace: "bluetooth" description: "Guards the Context.sendOrderedBroadcastMultiplePermissions API" bug: "345802719" } flag { name: "battery_saver_supported_check_api" is_exported: true Loading