From 407e8d2c181425f48bc708a1ab51d7eb64d3c136 Mon Sep 17 00:00:00 2001 From: Ashwini Oruganti Date: Tue, 6 Oct 2020 15:16:50 -0700 Subject: [PATCH] Add a method to return the flags set for a PendingIntent This change adds `getPendingIntentFlags` to return the flags set for a given PendingIntentRecord in ActivityManagerInternal. Bug: 169961135 Test: green builds Change-Id: If43c9620e7364265f48c3c3f2ebeadc268b83ddf --- core/java/android/app/ActivityManagerInternal.java | 5 +++++ .../com/android/server/am/ActivityManagerService.java | 5 +++++ .../com/android/server/am/PendingIntentController.java | 10 ++++++++++ 3 files changed, 20 insertions(+) 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 3610a58b66416..df098489be9e2 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();