diff --git a/api/current.txt b/api/current.txt index 5dfde3b41597e..30db015d863b2 100644 --- a/api/current.txt +++ b/api/current.txt @@ -8876,9 +8876,9 @@ package android.content { method public abstract deprecated android.graphics.drawable.Drawable peekWallpaper(); method public void registerComponentCallbacks(android.content.ComponentCallbacks); method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter); - method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, boolean); + method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int); method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler); - method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, boolean); + method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, int); method public abstract deprecated void removeStickyBroadcast(android.content.Intent); method public abstract deprecated void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle); method public abstract void revokeUriPermission(android.net.Uri, int); @@ -8969,6 +8969,7 @@ package android.content { field public static final java.lang.String NSD_SERVICE = "servicediscovery"; field public static final java.lang.String POWER_SERVICE = "power"; field public static final java.lang.String PRINT_SERVICE = "print"; + field public static final int RECEIVER_VISIBLE_TO_INSTANT_APPS = 1; // 0x1 field public static final java.lang.String RESTRICTIONS_SERVICE = "restrictions"; field public static final java.lang.String SEARCH_SERVICE = "search"; field public static final java.lang.String SENSOR_SERVICE = "sensor"; @@ -9068,9 +9069,9 @@ package android.content { method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory, android.database.DatabaseErrorHandler); method public deprecated android.graphics.drawable.Drawable peekWallpaper(); method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter); - method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, boolean); + method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int); method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler); - method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, boolean); + method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, int); method public deprecated void removeStickyBroadcast(android.content.Intent); method public deprecated void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle); method public void revokeUriPermission(android.net.Uri, int); @@ -40881,9 +40882,9 @@ package android.test.mock { method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory, android.database.DatabaseErrorHandler); method public android.graphics.drawable.Drawable peekWallpaper(); method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter); - method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, boolean); + method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int); method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler); - method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, boolean); + method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, int); method public void removeStickyBroadcast(android.content.Intent); method public void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle); method public void revokeUriPermission(android.net.Uri, int); diff --git a/api/system-current.txt b/api/system-current.txt index ce62bc92f6ab3..3408b5a07acaf 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -9376,9 +9376,9 @@ package android.content { method public abstract deprecated android.graphics.drawable.Drawable peekWallpaper(); method public void registerComponentCallbacks(android.content.ComponentCallbacks); method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter); - method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, boolean); + method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int); method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler); - method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, boolean); + method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, int); method public abstract deprecated void removeStickyBroadcast(android.content.Intent); method public abstract deprecated void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle); method public abstract void revokeUriPermission(android.net.Uri, int); @@ -9478,6 +9478,7 @@ package android.content { field public static final java.lang.String PERSISTENT_DATA_BLOCK_SERVICE = "persistent_data_block"; field public static final java.lang.String POWER_SERVICE = "power"; field public static final java.lang.String PRINT_SERVICE = "print"; + field public static final int RECEIVER_VISIBLE_TO_INSTANT_APPS = 1; // 0x1 field public static final java.lang.String RESTRICTIONS_SERVICE = "restrictions"; field public static final java.lang.String SEARCH_SERVICE = "search"; field public static final java.lang.String SENSOR_SERVICE = "sensor"; @@ -9583,9 +9584,9 @@ package android.content { method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory, android.database.DatabaseErrorHandler); method public deprecated android.graphics.drawable.Drawable peekWallpaper(); method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter); - method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, boolean); + method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int); method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler); - method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, boolean); + method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, int); method public deprecated void removeStickyBroadcast(android.content.Intent); method public deprecated void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle); method public void revokeUriPermission(android.net.Uri, int); @@ -44437,9 +44438,9 @@ package android.test.mock { method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory, android.database.DatabaseErrorHandler); method public android.graphics.drawable.Drawable peekWallpaper(); method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter); - method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, boolean); + method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int); method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler); - method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, boolean); + method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, int); method public void removeStickyBroadcast(android.content.Intent); method public void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle); method public void revokeUriPermission(android.net.Uri, int); diff --git a/api/test-current.txt b/api/test-current.txt index 8e3de84a73e77..3957532d9f717 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -8909,9 +8909,9 @@ package android.content { method public abstract deprecated android.graphics.drawable.Drawable peekWallpaper(); method public void registerComponentCallbacks(android.content.ComponentCallbacks); method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter); - method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, boolean); + method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int); method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler); - method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, boolean); + method public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, int); method public abstract deprecated void removeStickyBroadcast(android.content.Intent); method public abstract deprecated void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle); method public abstract void revokeUriPermission(android.net.Uri, int); @@ -9002,6 +9002,7 @@ package android.content { field public static final java.lang.String NSD_SERVICE = "servicediscovery"; field public static final java.lang.String POWER_SERVICE = "power"; field public static final java.lang.String PRINT_SERVICE = "print"; + field public static final int RECEIVER_VISIBLE_TO_INSTANT_APPS = 1; // 0x1 field public static final java.lang.String RESTRICTIONS_SERVICE = "restrictions"; field public static final java.lang.String SEARCH_SERVICE = "search"; field public static final java.lang.String SENSOR_SERVICE = "sensor"; @@ -9102,9 +9103,9 @@ package android.content { method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory, android.database.DatabaseErrorHandler); method public deprecated android.graphics.drawable.Drawable peekWallpaper(); method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter); - method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, boolean); + method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int); method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler); - method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, boolean); + method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, int); method public deprecated void removeStickyBroadcast(android.content.Intent); method public deprecated void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle); method public void revokeUriPermission(android.net.Uri, int); @@ -41076,9 +41077,9 @@ package android.test.mock { method public android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase.CursorFactory, android.database.DatabaseErrorHandler); method public android.graphics.drawable.Drawable peekWallpaper(); method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter); - method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, boolean); + method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int); method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler); - method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, boolean); + method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, int); method public void removeStickyBroadcast(android.content.Intent); method public void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle); method public void revokeUriPermission(android.net.Uri, int); diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index 80de64b94519f..424e783603aee 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -1357,34 +1357,34 @@ class ContextImpl extends Context { @Override public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, - boolean visibleToInstantApps) { - return registerReceiver(receiver, filter, null, null, visibleToInstantApps); + int flags) { + return registerReceiver(receiver, filter, null, null, flags); } @Override public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler) { return registerReceiverInternal(receiver, getUserId(), - filter, broadcastPermission, scheduler, getOuterContext(), false); + filter, broadcastPermission, scheduler, getOuterContext(), 0); } @Override public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, - String broadcastPermission, Handler scheduler, boolean visibleToInstantApps) { + String broadcastPermission, Handler scheduler, int flags) { return registerReceiverInternal(receiver, getUserId(), - filter, broadcastPermission, scheduler, getOuterContext(), visibleToInstantApps); + filter, broadcastPermission, scheduler, getOuterContext(), flags); } @Override public Intent registerReceiverAsUser(BroadcastReceiver receiver, UserHandle user, IntentFilter filter, String broadcastPermission, Handler scheduler) { return registerReceiverInternal(receiver, user.getIdentifier(), - filter, broadcastPermission, scheduler, getOuterContext(), false); + filter, broadcastPermission, scheduler, getOuterContext(), 0); } private Intent registerReceiverInternal(BroadcastReceiver receiver, int userId, IntentFilter filter, String broadcastPermission, - Handler scheduler, Context context, boolean visibleToInstantApps) { + Handler scheduler, Context context, int flags) { IIntentReceiver rd = null; if (receiver != null) { if (mPackageInfo != null && context != null) { @@ -1405,7 +1405,7 @@ class ContextImpl extends Context { try { final Intent intent = ActivityManager.getService().registerReceiver( mMainThread.getApplicationThread(), mBasePackageName, rd, filter, - broadcastPermission, userId, visibleToInstantApps); + broadcastPermission, userId, flags); if (intent != null) { intent.setExtrasClassLoader(getClassLoader()); intent.prepareToEnterProcess(); diff --git a/core/java/android/app/IActivityManager.aidl b/core/java/android/app/IActivityManager.aidl index ce4494b29fa69..d1eea3bdfb694 100644 --- a/core/java/android/app/IActivityManager.aidl +++ b/core/java/android/app/IActivityManager.aidl @@ -100,7 +100,7 @@ interface IActivityManager { boolean finishActivity(in IBinder token, int code, in Intent data, int finishTask); Intent registerReceiver(in IApplicationThread caller, in String callerPackage, in IIntentReceiver receiver, in IntentFilter filter, - in String requiredPermission, int userId, boolean visibleToInstantApps); + in String requiredPermission, int userId, int flags); void unregisterReceiver(in IIntentReceiver receiver); int broadcastIntent(in IApplicationThread caller, in Intent intent, in String resolvedType, in IIntentReceiver resultTo, int resultCode, diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index 46a704258c1a9..8af791aeb31f7 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -366,6 +366,19 @@ public abstract class Context { */ public static final int BIND_EXTERNAL_SERVICE = 0x80000000; + /** @hide */ + @IntDef(flag = true, + value = { + RECEIVER_VISIBLE_TO_INSTANT_APPS + }) + @Retention(RetentionPolicy.SOURCE) + public @interface RegisterReceiverFlags {} + + /** + * Flag for {@link #registerReceiver}: The receiver can receive broadcasts from Instant Apps. + */ + public static final int RECEIVER_VISIBLE_TO_INSTANT_APPS = 0x1; + /** * Returns an AssetManager instance for the application's package. *
@@ -2437,7 +2450,8 @@ public abstract class Context {
*
* @param receiver The BroadcastReceiver to handle the broadcast.
* @param filter Selects the Intent broadcasts to be received.
- * @param visibleToInstantApps If the receiver accepts broadcasts from Instant Apps.
+ * @param flags Additional options for the receiver. May be 0 or
+ * {@link #RECEIVER_VISIBLE_TO_INSTANT_APPS}.
*
* @return The first sticky intent found that matches filter,
* or null if there are none.
@@ -2449,7 +2463,7 @@ public abstract class Context {
@Nullable
public abstract Intent registerReceiver(@Nullable BroadcastReceiver receiver,
IntentFilter filter,
- boolean visibleToInstantApps);
+ @RegisterReceiverFlags int flags);
/**
* Register to receive intent broadcasts, to run in the context of
@@ -2488,9 +2502,9 @@ public abstract class Context {
@Nullable Handler scheduler);
/**
- * Register to receive intent broadcasts, with the receiver optionally being
- * exposed to Instant Apps. See
- * {@link #registerReceiver(BroadcastReceiver, IntentFilter, boolean)} and
+ * Register to receive intent broadcasts, to run in the context of
+ * scheduler. See
+ * {@link #registerReceiver(BroadcastReceiver, IntentFilter, int)} and
* {@link #registerReceiver(BroadcastReceiver, IntentFilter, String, Handler)}
* for more information.
*
@@ -2509,12 +2523,13 @@ public abstract class Context {
* no permission is required.
* @param scheduler Handler identifying the thread that will receive
* the Intent. If null, the main thread of the process will be used.
- * @param visibleToInstantApps If the receiver accepts broadcasts from Instant Apps.
+ * @param flags Additional options for the receiver. May be 0 or
+ * {@link #RECEIVER_VISIBLE_TO_INSTANT_APPS}.
*
* @return The first sticky intent found that matches filter,
* or null if there are none.
*
- * @see #registerReceiver(BroadcastReceiver, IntentFilter, boolean)
+ * @see #registerReceiver(BroadcastReceiver, IntentFilter, int)
* @see #registerReceiver(BroadcastReceiver, IntentFilter, String, Handler)
* @see #sendBroadcast
* @see #unregisterReceiver
@@ -2522,7 +2537,7 @@ public abstract class Context {
@Nullable
public abstract Intent registerReceiver(BroadcastReceiver receiver,
IntentFilter filter, @Nullable String broadcastPermission,
- @Nullable Handler scheduler, boolean visibleToInstantApps);
+ @Nullable Handler scheduler, @RegisterReceiverFlags int flags);
/**
* @hide
diff --git a/core/java/android/content/ContextWrapper.java b/core/java/android/content/ContextWrapper.java
index b59fc3ddbb84d..5264cd7c8cfc8 100644
--- a/core/java/android/content/ContextWrapper.java
+++ b/core/java/android/content/ContextWrapper.java
@@ -605,8 +605,8 @@ public class ContextWrapper extends Context {
@Override
public Intent registerReceiver(
- BroadcastReceiver receiver, IntentFilter filter, boolean visibleToInstantApps) {
- return mBase.registerReceiver(receiver, filter, visibleToInstantApps);
+ BroadcastReceiver receiver, IntentFilter filter, int flags) {
+ return mBase.registerReceiver(receiver, filter, flags);
}
@Override
@@ -620,9 +620,9 @@ public class ContextWrapper extends Context {
@Override
public Intent registerReceiver(
BroadcastReceiver receiver, IntentFilter filter,
- String broadcastPermission, Handler scheduler, boolean visibleToInstantApps) {
+ String broadcastPermission, Handler scheduler, int flags) {
return mBase.registerReceiver(receiver, filter, broadcastPermission,
- scheduler, visibleToInstantApps);
+ scheduler, flags);
}
/** @hide */
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index f431f21485d12..6e9e8a46122ef 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -18376,10 +18376,12 @@ public class ActivityManagerService extends IActivityManager.Stub
public Intent registerReceiver(IApplicationThread caller, String callerPackage,
IIntentReceiver receiver, IntentFilter filter, String permission, int userId,
- boolean visibleToInstantApps) {
+ int flags) {
enforceNotIsolatedCaller("registerReceiver");
ArrayList