summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Amith Yamasani <yamasani@google.com> 2024-09-14 07:10:32 -0700
committer Amith Yamasani <yamasani@google.com> 2024-09-14 07:11:55 -0700
commita2e386b3555a25df7e3405ec1269f2ac4b2a9dfc (patch)
treed26706ca2f6c6e07ab43ef531d1e66ff77e41317
parent786b2387a89c74c5e53be9952a61cc19b240f052 (diff)
Don't send BOOT_COMPLETED to app in restricted backup mode
If the app is being started for a backup or restore operation, don't send it the BOOT_COMPLETED broadcasts even if currently in the package STOPPED state. This prevents some apps from crashing because they don't properly handle getting broadcasts during a backup or restore. Bug: 362516211 Test: Install a previously backed up app and ensure restore works Flag: EXEMPT bugfix Change-Id: Iddb40c1398f49dd72cbcb730b9cfb48aaca98e2c
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java7
1 files changed, 5 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 3c574769eaec..54a741060bbe 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -4772,7 +4772,7 @@ public class ActivityManagerService extends IActivityManager.Stub
if (!mConstants.mEnableWaitForFinishAttachApplication) {
finishAttachApplicationInner(startSeq, callingUid, pid);
}
- maybeSendBootCompletedLocked(app);
+ maybeSendBootCompletedLocked(app, isRestrictedBackupMode);
} catch (Exception e) {
// We need kill the process group here. (b/148588589)
Slog.wtf(TAG, "Exception thrown during bind of " + app, e);
@@ -5017,7 +5017,7 @@ public class ActivityManagerService extends IActivityManager.Stub
* Send LOCKED_BOOT_COMPLETED and BOOT_COMPLETED to the package explicitly when unstopped,
* or when the package first starts in private space
*/
- private void maybeSendBootCompletedLocked(ProcessRecord app) {
+ private void maybeSendBootCompletedLocked(ProcessRecord app, boolean isRestrictedBackupMode) {
boolean sendBroadcast = false;
if (android.os.Flags.allowPrivateProfile()
&& android.multiuser.Flags.enablePrivateSpaceFeatures()) {
@@ -5043,6 +5043,9 @@ public class ActivityManagerService extends IActivityManager.Stub
RESTRICTION_REASON_USAGE, "unknown", RESTRICTION_SOURCE_USER, 0L);
}
+ // Don't send BOOT_COMPLETED if currently in restricted backup mode
+ if (isRestrictedBackupMode) return;
+
if (!sendBroadcast) {
if (!android.content.pm.Flags.stayStopped()) return;
// Nothing to do if it wasn't previously stopped