summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Harshit Mahajan <harshitmahajan@google.com> 2024-09-19 02:16:40 +0000
committer Harshit Mahajan <harshitmahajan@google.com> 2024-09-23 10:22:39 +0000
commitd0bedecba62c497f9c4264a593dfc494f1e134d5 (patch)
treecab8c9fd0e97cc5d433a321ba75f96be5171b87b
parent223c40c19be89a6415bcc4df41667b453a888f3f (diff)
Fix intent used in PendingIntents
Need to have unique action name for each RollbackId to receive correct callbacks from rollbackCommit API. Need to set flag RECEIVER_REGISTERED_ONLY to receive broadcast before system is ready Test: verified that unique broadcast is received for each rollback Bug: 289203818 Flag: android.crashrecovery.flags.refactor_crashrecovery Change-Id: I0c8ec52aa02044cd5c4381e370ce807565a34899
-rw-r--r--services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java8
1 files changed, 5 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java b/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java
index e3d71e4998be..f78c4488cbfb 100644
--- a/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java
+++ b/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java
@@ -81,7 +81,7 @@ import java.util.function.Consumer;
public final class RollbackPackageHealthObserver implements PackageHealthObserver {
private static final String TAG = "RollbackPackageHealthObserver";
private static final String NAME = "rollback-observer";
- private static final String ACTION_NAME = RollbackPackageHealthObserver.class.getName();
+ private static final String CLASS_NAME = RollbackPackageHealthObserver.class.getName();
private static final int PERSISTENT_MASK = ApplicationInfo.FLAG_PERSISTENT
| ApplicationInfo.FLAG_SYSTEM;
@@ -610,14 +610,16 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve
}
};
+ String intentActionName = CLASS_NAME + rollback.getRollbackId();
// Register the BroadcastReceiver
mContext.registerReceiver(rollbackReceiver,
- new IntentFilter(ACTION_NAME),
+ new IntentFilter(intentActionName),
Context.RECEIVER_NOT_EXPORTED);
- Intent intentReceiver = new Intent(ACTION_NAME);
+ Intent intentReceiver = new Intent(intentActionName);
intentReceiver.putExtra("rollbackId", rollback.getRollbackId());
intentReceiver.setPackage(mContext.getPackageName());
+ intentReceiver.setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
PendingIntent rollbackPendingIntent = PendingIntent.getBroadcast(mContext,
rollback.getRollbackId(),