Merge "Allow instant apps to send broadcasts to themselves" into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
93ec4f829d
@@ -21035,9 +21035,15 @@ public class ActivityManagerService extends IActivityManager.Stub
|
|||||||
}
|
}
|
||||||
|
|
||||||
private List<ResolveInfo> collectReceiverComponents(Intent intent, String resolvedType,
|
private List<ResolveInfo> collectReceiverComponents(Intent intent, String resolvedType,
|
||||||
int callingUid, int[] users) {
|
int callingUid, boolean callerInstantApp, int[] users) {
|
||||||
// TODO: come back and remove this assumption to triage all broadcasts
|
// TODO: come back and remove this assumption to triage all broadcasts
|
||||||
int pmFlags = STOCK_PM_FLAGS | MATCH_DEBUG_TRIAGED_MISSING;
|
int pmFlags = STOCK_PM_FLAGS | MATCH_DEBUG_TRIAGED_MISSING;
|
||||||
|
// Instant apps should be able to send broadcasts to themselves, so we would
|
||||||
|
// match instant receivers and later the broadcast queue would enforce that
|
||||||
|
// the broadcast cannot be sent to a receiver outside the instant UID.
|
||||||
|
if (callerInstantApp) {
|
||||||
|
pmFlags |= PackageManager.MATCH_INSTANT;
|
||||||
|
}
|
||||||
|
|
||||||
List<ResolveInfo> receivers = null;
|
List<ResolveInfo> receivers = null;
|
||||||
try {
|
try {
|
||||||
@@ -21666,7 +21672,8 @@ public class ActivityManagerService extends IActivityManager.Stub
|
|||||||
// Need to resolve the intent to interested receivers...
|
// Need to resolve the intent to interested receivers...
|
||||||
if ((intent.getFlags()&Intent.FLAG_RECEIVER_REGISTERED_ONLY)
|
if ((intent.getFlags()&Intent.FLAG_RECEIVER_REGISTERED_ONLY)
|
||||||
== 0) {
|
== 0) {
|
||||||
receivers = collectReceiverComponents(intent, resolvedType, callingUid, users);
|
receivers = collectReceiverComponents(intent, resolvedType, callingUid,
|
||||||
|
callerInstantApp, users);
|
||||||
}
|
}
|
||||||
if (intent.getComponent() == null) {
|
if (intent.getComponent() == null) {
|
||||||
if (userId == UserHandle.USER_ALL && callingUid == SHELL_UID) {
|
if (userId == UserHandle.USER_ALL && callingUid == SHELL_UID) {
|
||||||
|
|||||||
Reference in New Issue
Block a user