diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 7f5a865935b4c594f31266142be2e33e4da36798..e322e0e005e7d3fcab836f891cd7ce19d38a5de3 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -4451,8 +4451,17 @@ public class ActivityManagerService extends IActivityManager.Stub } } - final boolean clearPendingIntentsForStoppedApp = (android.content.pm.Flags.stayStopped() - && packageStateStopped); + boolean clearPendingIntentsForStoppedApp = false; + try { + clearPendingIntentsForStoppedApp = (packageStateStopped + && android.content.pm.Flags.stayStopped()); + } catch (IllegalStateException e) { + // It's unlikely for a package to be force-stopped early in the boot cycle. So, if we + // check for 'packageStateStopped' which should evaluate to 'false', then this should + // ensure we are not accessing the flag early in the boot cycle. As an additional + // safety measure, catch the exception and ignore to avoid causing a device restart. + clearPendingIntentsForStoppedApp = false; + } if (packageName == null || uninstalling || clearPendingIntentsForStoppedApp) { didSomething |= mPendingIntentController.removePendingIntentsForPackage( packageName, userId, appId, doit);