diff options
| author | 2024-09-14 07:10:32 -0700 | |
|---|---|---|
| committer | 2024-09-14 07:11:55 -0700 | |
| commit | a2e386b3555a25df7e3405ec1269f2ac4b2a9dfc (patch) | |
| tree | d26706ca2f6c6e07ab43ef531d1e66ff77e41317 | |
| parent | 786b2387a89c74c5e53be9952a61cc19b240f052 (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.java | 7 |
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 |