diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java index 1f8cf8ac6d1dc..89cb8b8d54062 100644 --- a/core/java/android/app/ActivityManagerInternal.java +++ b/core/java/android/app/ActivityManagerInternal.java @@ -102,6 +102,11 @@ public abstract class ActivityManagerInternal { public abstract void setPendingIntentWhitelistDuration(IIntentSender target, IBinder whitelistToken, long duration); + /** + * Returns the flags set for a {@link PendingIntent}. + */ + public abstract int getPendingIntentFlags(IIntentSender target); + /** * Allows a {@link PendingIntent} to start activities from background. */ diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 4e9d4563629ba..dbc77d81c2514 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -15788,6 +15788,11 @@ public class ActivityManagerService extends IActivityManager.Stub duration); } + @Override + public int getPendingIntentFlags(IIntentSender target) { + return mPendingIntentController.getPendingIntentFlags(target); + } + @Override public void setPendingIntentAllowBgActivityStarts(IIntentSender target, IBinder whitelistToken, int flags) { diff --git a/services/core/java/com/android/server/am/PendingIntentController.java b/services/core/java/com/android/server/am/PendingIntentController.java index c62df56a88c52..2ae3d355a7ed9 100644 --- a/services/core/java/com/android/server/am/PendingIntentController.java +++ b/services/core/java/com/android/server/am/PendingIntentController.java @@ -311,6 +311,16 @@ public class PendingIntentController { } } + int getPendingIntentFlags(IIntentSender target) { + if (!(target instanceof PendingIntentRecord)) { + Slog.w(TAG, "markAsSentFromNotification(): not a PendingIntentRecord: " + target); + return 0; + } + synchronized (mLock) { + return ((PendingIntentRecord) target).key.flags; + } + } + private void makeIntentSenderCanceled(PendingIntentRecord rec) { rec.canceled = true; final RemoteCallbackList callbacks = rec.detachCancelListenersLocked();