diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 0b37fdb1680da..6f572df708a8d 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -476,12 +476,23 @@ public final class ActiveServices { Slog.w(TAG, "Background start not allowed: service " + service + " to " + r.name.flattenToShortString() + " from pid=" + callingPid + " uid=" + callingUid - + " pkg=" + callingPackage); + + " pkg=" + callingPackage + " startFg?=" + fgRequired); if (allowed == ActivityManager.APP_START_MODE_DELAYED || forceSilentAbort) { // In this case we are silently disabling the app, to disrupt as // little as possible existing apps. return null; } + if (forcedStandby) { + // This is an O+ app, but we might be here because the user has placed + // it under strict background restrictions. Don't punish the app if it's + // trying to do the right thing but we're denying it for that reason. + if (fgRequired) { + if (DEBUG_BACKGROUND_CHECK) { + Slog.v(TAG, "Silently dropping foreground service launch due to FAS"); + } + return null; + } + } // This app knows it is in the new model where this operation is not // allowed, so tell it what has happened. UidRecord uidRec = mAm.mActiveUids.get(r.appInfo.uid);