diff options
author | Peter Wang <tpwang@google.com> | 2019-12-02 21:32:33 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2019-12-02 21:32:33 +0000 |
commit | 471b839d0215ef8225fa5beb59e0f12bcdbe8514 (patch) | |
tree | 8f1e50b9d0da723f43b2a2d5c1c951ad4a605813 | |
parent | b93721efc762fa173b5005970fc721c5d5d86dd1 (diff) | |
parent | cf8bfcc4c2c693a81a5a577a59dac926b2c7ac5e (diff) | |
download | base-471b839d0215ef8225fa5beb59e0f12bcdbe8514.tar.gz |
Merge "[Telephony Mainline] Exposed sendOrderedBroadcast"
-rw-r--r-- | api/current.txt | 1 | ||||
-rw-r--r-- | core/java/android/app/ContextImpl.java | 12 | ||||
-rw-r--r-- | core/java/android/content/Context.java | 42 | ||||
-rw-r--r-- | core/java/android/content/ContextWrapper.java | 10 | ||||
-rw-r--r-- | test-mock/src/android/test/mock/MockContext.java | 7 |
5 files changed, 72 insertions, 0 deletions
diff --git a/api/current.txt b/api/current.txt index ab0c57dfaaf2..de008f7f2b2f 100644 --- a/api/current.txt +++ b/api/current.txt @@ -9773,6 +9773,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); diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index 0e0e7f769651..d317c34c6518 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -1351,6 +1351,18 @@ class ContextImpl extends Context { } @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) { warnIfCallingFromSystemProcess(); diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index 507d1d82330c..66a5c47b3df8 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -2432,6 +2432,48 @@ public abstract class Context { } /** + * 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, * so that others can quickly retrieve that data through the return diff --git a/core/java/android/content/ContextWrapper.java b/core/java/android/content/ContextWrapper.java index 9b24bee30829..22b345faf816 100644 --- a/core/java/android/content/ContextWrapper.java +++ b/core/java/android/content/ContextWrapper.java @@ -583,6 +583,16 @@ public class ContextWrapper extends Context { } @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) { mBase.sendStickyBroadcast(intent); diff --git a/test-mock/src/android/test/mock/MockContext.java b/test-mock/src/android/test/mock/MockContext.java index 45b236c307c3..0208c3a0a0de 100644 --- a/test-mock/src/android/test/mock/MockContext.java +++ b/test-mock/src/android/test/mock/MockContext.java @@ -470,6 +470,13 @@ public class MockContext extends Context { } @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(); } |