diff --git a/services/core/java/com/android/server/am/PendingIntentRecord.java b/services/core/java/com/android/server/am/PendingIntentRecord.java index cb26c134f74ab..ab4fb46fcb112 100644 --- a/services/core/java/com/android/server/am/PendingIntentRecord.java +++ b/services/core/java/com/android/server/am/PendingIntentRecord.java @@ -42,6 +42,7 @@ import android.os.Bundle; import android.os.IBinder; import android.os.PowerWhitelistManager; import android.os.PowerWhitelistManager.ReasonCode; +import android.os.Process; import android.os.RemoteCallbackList; import android.os.RemoteException; import android.os.TransactionTooLargeException; @@ -382,6 +383,14 @@ public final class PendingIntentRecord extends IIntentSender.Stub { }) public static BackgroundStartPrivileges getDefaultBackgroundStartPrivileges( int callingUid) { + if (UserHandle.getAppId(callingUid) == Process.SYSTEM_UID) { + // We temporarily allow BAL for system processes, while we verify that all valid use + // cases are opted in explicitly to grant their BAL permission. + // Background: In many cases devices are running additional apps that share UID with + // the system. If one of these apps targets a lower SDK the change is not active, but + // as soon as that app is upgraded (or removed) BAL would be blocked. (b/283138430) + return BackgroundStartPrivileges.ALLOW_BAL; + } boolean isChangeEnabledForApp = CompatChanges.isChangeEnabled( DEFAULT_RESCIND_BAL_PRIVILEGES_FROM_PENDING_INTENT_SENDER, callingUid); if (isChangeEnabledForApp) {