diff options
| author | 2023-06-16 20:18:19 +0000 | |
|---|---|---|
| committer | 2023-06-16 20:18:19 +0000 | |
| commit | 26b14ab48bae382bb025167995a27d39e92fa10d (patch) | |
| tree | 49137f775354f441fc7b82d57935f504bf4f44c5 | |
| parent | d6013c0b3e2c7338fbe2be53ff0e94024bc8ad19 (diff) | |
| parent | f338ffa8f70bbd545d87516cda710ba930f69068 (diff) | |
Merge "Allow deviceProvisioningPackage to start foreground service from the background." into udc-dev am: f338ffa8f7
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23667435
Change-Id: I16d1d1fc369acd238e5a415aec4416d48309b762
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | services/core/java/com/android/server/am/ActiveServices.java | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index fc84e1386d1f..c1239d53058c 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -406,6 +406,8 @@ public final class ActiveServices { // allowlisted packageName. ArraySet<String> mAllowListWhileInUsePermissionInFgs = new ArraySet<>(); + String mCachedDeviceProvisioningPackage; + // TODO: remove this after feature development is done private static final SimpleDateFormat DATE_FORMATTER = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -480,7 +482,8 @@ public final class ActiveServices { // (REASON_ALARM_MANAGER_ALARM_CLOCK), allow it to continue and do not stop it, // even the app is background-restricted. if (r.isForeground - && r.mAllowStartForegroundAtEntering != REASON_ALARM_MANAGER_ALARM_CLOCK) { + && r.mAllowStartForegroundAtEntering != REASON_ALARM_MANAGER_ALARM_CLOCK + && !isDeviceProvisioningPackage(r.packageName)) { toStop.add(r); } } @@ -880,7 +883,8 @@ public final class ActiveServices { boolean forcedStandby = false; if (bgLaunch && appRestrictedAnyInBackground(appUid, appPackageName) - && !isTempAllowedByAlarmClock(appUid)) { + && !isTempAllowedByAlarmClock(appUid) + && !isDeviceProvisioningPackage(appPackageName)) { if (DEBUG_FOREGROUND_SERVICE) { Slog.d(TAG, "Forcing bg-only service start only for " + r.shortInstanceName + " : bgLaunch=" + bgLaunch + " callerFg=" + callerFg); @@ -1926,6 +1930,9 @@ public final class ActiveServices { */ private boolean isForegroundServiceAllowedInBackgroundRestricted(ProcessRecord app) { final ProcessStateRecord state = app.mState; + if (isDeviceProvisioningPackage(app.info.packageName)) { + return true; + } if (!state.isBackgroundRestricted() || state.getSetProcState() <= ActivityManager.PROCESS_STATE_BOUND_TOP) { return true; @@ -8404,4 +8411,13 @@ public final class ActiveServices { } return results; } + + private boolean isDeviceProvisioningPackage(String packageName) { + if (mCachedDeviceProvisioningPackage == null) { + mCachedDeviceProvisioningPackage = mAm.mContext.getResources().getString( + com.android.internal.R.string.config_deviceProvisioningPackage); + } + return mCachedDeviceProvisioningPackage != null + && mCachedDeviceProvisioningPackage.equals(packageName); + } } |