diff options
| author | 2024-09-19 02:16:40 +0000 | |
|---|---|---|
| committer | 2024-09-23 10:22:39 +0000 | |
| commit | d0bedecba62c497f9c4264a593dfc494f1e134d5 (patch) | |
| tree | cab8c9fd0e97cc5d433a321ba75f96be5171b87b | |
| parent | 223c40c19be89a6415bcc4df41667b453a888f3f (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.java | 8 |
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(), |