Loading core/java/android/app/Notification.java +13 −0 Original line number Diff line number Diff line Loading @@ -3313,6 +3313,19 @@ public class Notification implements Parcelable builder.build(); // callers expect this notification to be ready to use } /** * Sets the token used for background operations for the pending intents associated with this * notification. * * This token is automatically set during deserialization for you, you usually won't need to * call this unless you want to change the existing token, if any. * * @hide */ public void setAllowlistToken(@Nullable IBinder token) { mAllowlistToken = token; } /** * @hide */ Loading services/core/java/com/android/server/notification/NotificationManagerService.java +7 −1 Original line number Diff line number Diff line Loading @@ -4221,6 +4221,7 @@ public class NotificationManagerService extends SystemService { } } /** Notifications returned here will have allowlistToken stripped from them. */ private StatusBarNotification sanitizeSbn(String pkg, int userId, StatusBarNotification sbn) { if (sbn.getUserId() == userId) { Loading @@ -4228,11 +4229,16 @@ public class NotificationManagerService extends SystemService { // We could pass back a cloneLight() but clients might get confused and // try to send this thing back to notify() again, which would not work // very well. Notification notification = sbn.getNotification().clone(); // Remove background token before returning notification to untrusted app, this // ensures the app isn't able to perform background operations that are // associated with notification interactions. notification.setAllowlistToken(null); return new StatusBarNotification( sbn.getPackageName(), sbn.getOpPkg(), sbn.getId(), sbn.getTag(), sbn.getUid(), sbn.getInitialPid(), sbn.getNotification().clone(), notification, sbn.getUser(), sbn.getOverrideGroupKey(), sbn.getPostTime()); } } Loading Loading
core/java/android/app/Notification.java +13 −0 Original line number Diff line number Diff line Loading @@ -3313,6 +3313,19 @@ public class Notification implements Parcelable builder.build(); // callers expect this notification to be ready to use } /** * Sets the token used for background operations for the pending intents associated with this * notification. * * This token is automatically set during deserialization for you, you usually won't need to * call this unless you want to change the existing token, if any. * * @hide */ public void setAllowlistToken(@Nullable IBinder token) { mAllowlistToken = token; } /** * @hide */ Loading
services/core/java/com/android/server/notification/NotificationManagerService.java +7 −1 Original line number Diff line number Diff line Loading @@ -4221,6 +4221,7 @@ public class NotificationManagerService extends SystemService { } } /** Notifications returned here will have allowlistToken stripped from them. */ private StatusBarNotification sanitizeSbn(String pkg, int userId, StatusBarNotification sbn) { if (sbn.getUserId() == userId) { Loading @@ -4228,11 +4229,16 @@ public class NotificationManagerService extends SystemService { // We could pass back a cloneLight() but clients might get confused and // try to send this thing back to notify() again, which would not work // very well. Notification notification = sbn.getNotification().clone(); // Remove background token before returning notification to untrusted app, this // ensures the app isn't able to perform background operations that are // associated with notification interactions. notification.setAllowlistToken(null); return new StatusBarNotification( sbn.getPackageName(), sbn.getOpPkg(), sbn.getId(), sbn.getTag(), sbn.getUid(), sbn.getInitialPid(), sbn.getNotification().clone(), notification, sbn.getUser(), sbn.getOverrideGroupKey(), sbn.getPostTime()); } } Loading