am baad552d: am 68d881cf: Fix issue #2166755: BroadcastReceiver trying to return result during a non-ordered broadcast
Merge commit 'baad552dfd6e9d244659e7509ff958ec8f449c03' into eclair-mr2-plus-aosp * commit 'baad552dfd6e9d244659e7509ff958ec8f449c03': Fix issue #2166755: BroadcastReceiver trying to return result during a non-ordered broadcast
This commit is contained in:
@@ -8390,7 +8390,8 @@ public final class ActivityManagerService extends ActivityManagerNative implemen
|
||||
if (i == 0) {
|
||||
finisher = new IIntentReceiver.Stub() {
|
||||
public void performReceive(Intent intent, int resultCode,
|
||||
String data, Bundle extras, boolean ordered)
|
||||
String data, Bundle extras, boolean ordered,
|
||||
boolean sticky)
|
||||
throws RemoteException {
|
||||
synchronized (ActivityManagerService.this) {
|
||||
mDidUpdate = true;
|
||||
@@ -11572,7 +11573,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen
|
||||
Intent intent = (Intent)allSticky.get(i);
|
||||
BroadcastRecord r = new BroadcastRecord(intent, null,
|
||||
null, -1, -1, null, receivers, null, 0, null, null,
|
||||
false);
|
||||
false, true);
|
||||
if (mParallelBroadcasts.size() == 0) {
|
||||
scheduleBroadcastsLocked();
|
||||
}
|
||||
@@ -11797,7 +11798,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen
|
||||
BroadcastRecord r = new BroadcastRecord(intent, callerApp,
|
||||
callerPackage, callingPid, callingUid, requiredPermission,
|
||||
registeredReceivers, resultTo, resultCode, resultData, map,
|
||||
ordered);
|
||||
ordered, false);
|
||||
if (DEBUG_BROADCAST) Log.v(
|
||||
TAG, "Enqueueing parallel broadcast " + r
|
||||
+ ": prev had " + mParallelBroadcasts.size());
|
||||
@@ -11876,7 +11877,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen
|
||||
|| resultTo != null) {
|
||||
BroadcastRecord r = new BroadcastRecord(intent, callerApp,
|
||||
callerPackage, callingPid, callingUid, requiredPermission,
|
||||
receivers, resultTo, resultCode, resultData, map, ordered);
|
||||
receivers, resultTo, resultCode, resultData, map, ordered, false);
|
||||
if (DEBUG_BROADCAST) Log.v(
|
||||
TAG, "Enqueueing ordered broadcast " + r
|
||||
+ ": prev had " + mOrderedBroadcasts.size());
|
||||
@@ -12180,15 +12181,15 @@ public final class ActivityManagerService extends ActivityManagerNative implemen
|
||||
}
|
||||
|
||||
static void performReceive(ProcessRecord app, IIntentReceiver receiver,
|
||||
Intent intent, int resultCode, String data,
|
||||
Bundle extras, boolean ordered) throws RemoteException {
|
||||
Intent intent, int resultCode, String data, Bundle extras,
|
||||
boolean ordered, boolean sticky) throws RemoteException {
|
||||
if (app != null && app.thread != null) {
|
||||
// If we have an app thread, do the call through that so it is
|
||||
// correctly ordered with other one-way calls.
|
||||
app.thread.scheduleRegisteredReceiver(receiver, intent, resultCode,
|
||||
data, extras, ordered);
|
||||
data, extras, ordered, sticky);
|
||||
} else {
|
||||
receiver.performReceive(intent, resultCode, data, extras, ordered);
|
||||
receiver.performReceive(intent, resultCode, data, extras, ordered, sticky);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12252,7 +12253,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen
|
||||
}
|
||||
performReceive(filter.receiverList.app, filter.receiverList.receiver,
|
||||
new Intent(r.intent), r.resultCode,
|
||||
r.resultData, r.resultExtras, r.ordered);
|
||||
r.resultData, r.resultExtras, r.ordered, r.sticky);
|
||||
if (ordered) {
|
||||
r.state = BroadcastRecord.CALL_DONE_RECEIVE;
|
||||
}
|
||||
@@ -12385,7 +12386,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen
|
||||
}
|
||||
performReceive(r.callerApp, r.resultTo,
|
||||
new Intent(r.intent), r.resultCode,
|
||||
r.resultData, r.resultExtras, false);
|
||||
r.resultData, r.resultExtras, false, false);
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Failure sending broadcast result of " + r.intent, e);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user