[Telephony Mainline] Exposed sendOrderedBroadcast

with appOp as String and options as Bundle

Bug: 139077993
Test: Build, GsmInboundSmsHandlerTest, CdmaInboundSmsHandlerTest and WapPushOverSmsTest
Change-Id: I60e21c7202d1bc7c5d28dfad2e2edde902f28a15
This commit is contained in:
Peter Wang
2019-11-07 16:57:23 -08:00
parent e8fe213c25
commit 7701f57250
5 changed files with 72 additions and 0 deletions

View File

@@ -9899,6 +9899,7 @@ package android.content {
method public abstract void sendOrderedBroadcast(@RequiresPermission android.content.Intent, @Nullable String);
method public abstract void sendOrderedBroadcast(@NonNull @RequiresPermission android.content.Intent, @Nullable String, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
method public void sendOrderedBroadcast(@NonNull android.content.Intent, @Nullable String, @Nullable String, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
method public void sendOrderedBroadcast(@NonNull @RequiresPermission android.content.Intent, @Nullable String, @Nullable String, @Nullable android.os.Bundle, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS") public abstract void sendOrderedBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle, @Nullable String, android.content.BroadcastReceiver, @Nullable android.os.Handler, int, @Nullable String, @Nullable android.os.Bundle);
method @Deprecated @RequiresPermission(android.Manifest.permission.BROADCAST_STICKY) public abstract void sendStickyBroadcast(@RequiresPermission android.content.Intent);
method @Deprecated @RequiresPermission(allOf={"android.permission.INTERACT_ACROSS_USERS", android.Manifest.permission.BROADCAST_STICKY}) public abstract void sendStickyBroadcastAsUser(@RequiresPermission android.content.Intent, android.os.UserHandle);

View File

@@ -1361,6 +1361,18 @@ class ContextImpl extends Context {
initialExtras);
}
@Override
public void sendOrderedBroadcast(Intent intent, String receiverPermission, String receiverAppOp,
Bundle options, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode,
String initialData, @Nullable Bundle initialExtras) {
int intAppOp = AppOpsManager.OP_NONE;
if (!TextUtils.isEmpty(receiverAppOp)) {
intAppOp = AppOpsManager.strOpToOp(receiverAppOp);
}
sendOrderedBroadcastAsUser(intent, getUser(), receiverPermission, intAppOp, options,
resultReceiver, scheduler, initialCode, initialData, initialExtras);
}
@Override
@Deprecated
public void sendStickyBroadcast(Intent intent) {

View File

@@ -2483,6 +2483,48 @@ public abstract class Context {
throw new RuntimeException("Not implemented. Must override in a subclass.");
}
/**
* Version of
* {@link #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String,
* Bundle)} that allows you to specify the App Op to enforce restrictions on which receivers
* the broadcast will be sent to as well as supply an optional sending options
*
* <p>See {@link BroadcastReceiver} for more information on Intent broadcasts.
*
* @param intent The Intent to broadcast; all receivers matching this
* Intent will receive the broadcast.
* @param receiverPermission String naming a permissions that
* a receiver must hold in order to receive your broadcast.
* If null, no permission is required.
* @param receiverAppOp The app op associated with the broadcast. If null, no appOp is
* required. If both receiverAppOp and receiverPermission are non-null,
* a receiver must have both of them to
* receive the broadcast
* @param options (optional) Additional sending options, generated from a
* {@link android.app.BroadcastOptions}.
* @param resultReceiver Your own BroadcastReceiver to treat as the final
* receiver of the broadcast.
* @param scheduler A custom Handler with which to schedule the
* resultReceiver callback; if null it will be
* scheduled in the Context's main thread.
* @param initialCode An initial value for the result code. Often
* Activity.RESULT_OK.
* @param initialData An initial value for the result data. Often
* null.
* @param initialExtras An initial value for the result extras. Often
* null.
*
* @see #sendOrderedBroadcast(Intent, String, BroadcastReceiver, Handler, int, String, Bundle)
* @see android.app.BroadcastOptions
*/
public void sendOrderedBroadcast(@RequiresPermission @NonNull Intent intent,
@Nullable String receiverPermission, @Nullable String receiverAppOp,
@Nullable Bundle options, @Nullable BroadcastReceiver resultReceiver,
@Nullable Handler scheduler, int initialCode, @Nullable String initialData,
@Nullable Bundle initialExtras) {
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,

View File

@@ -589,6 +589,16 @@ public class ContextWrapper extends Context {
scheduler, initialCode, initialData, initialExtras);
}
@Override
public void sendOrderedBroadcast(@RequiresPermission @NonNull Intent intent,
@Nullable String receiverPermission, @Nullable String receiverAppOp,
@Nullable Bundle options, @Nullable BroadcastReceiver resultReceiver,
@Nullable Handler scheduler, int initialCode, @Nullable String initialData,
@Nullable Bundle initialExtras) {
mBase.sendOrderedBroadcast(intent, receiverPermission, receiverAppOp, options,
resultReceiver, scheduler, initialCode, initialData, initialExtras);
}
@Override
@Deprecated
public void sendStickyBroadcast(Intent intent) {

View File

@@ -469,6 +469,13 @@ public class MockContext extends Context {
throw new UnsupportedOperationException();
}
@Override
public void sendOrderedBroadcast(Intent intent, String receiverPermission, String receiverAppOp,
Bundle options, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode,
String initialData, Bundle initialExtras) {
throw new UnsupportedOperationException();
}
@Override
public void sendStickyBroadcast(Intent intent) {
throw new UnsupportedOperationException();