diff options
| -rw-r--r-- | services/core/java/com/android/server/am/PendingIntentRecord.java | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/am/PendingIntentRecord.java b/services/core/java/com/android/server/am/PendingIntentRecord.java index f7c777e9cd6c..dc924c11f867 100644 --- a/services/core/java/com/android/server/am/PendingIntentRecord.java +++ b/services/core/java/com/android/server/am/PendingIntentRecord.java @@ -24,6 +24,7 @@ import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NA import android.annotation.Nullable; import android.app.ActivityManager; import android.app.ActivityOptions; +import android.app.BroadcastOptions; import android.app.PendingIntent; import android.content.IIntentReceiver; import android.content.IIntentSender; @@ -408,6 +409,18 @@ public final class PendingIntentRecord extends IIntentSender.Stub { } controller.mAmInternal.tempAllowlistForPendingIntent(callingPid, callingUid, uid, duration.duration, duration.type, duration.reasonCode, tag.toString()); + } else if (key.type == ActivityManager.INTENT_SENDER_FOREGROUND_SERVICE + && options != null) { + // If this is a getForegroundService() type pending intent, use its BroadcastOptions + // temp allowlist duration as its pending intent temp allowlist duration. + BroadcastOptions brOptions = new BroadcastOptions(options); + if (brOptions.getTemporaryAppAllowlistDuration() > 0) { + controller.mAmInternal.tempAllowlistForPendingIntent(callingPid, callingUid, + uid, brOptions.getTemporaryAppAllowlistDuration(), + brOptions.getTemporaryAppAllowlistType(), + brOptions.getTemporaryAppAllowlistReasonCode(), + brOptions.getTemporaryAppAllowlistReason()); + } } boolean sendFinish = finishedReceiver != null; |