NotificationManagerCompat
public final class NotificationManagerCompat
Compatibility library for NotificationManager with fallbacks for older platforms.
To use this class, call the static function from to get a NotificationManagerCompat object, and then call one of its methods to post or cancel notifications.
Summary
Nested types |
|---|
public class NotificationManagerCompat.NotificationWithIdAndTagHelper class which encapsulates a Notification, its id, and optionally a tag, for use when batch-posting a number of notifications. |
Constants |
|
|---|---|
static final String |
ACTION_BIND_SIDE_CHANNEL = "android.support.BIND_NOTIFICATION_SIDE_CHANNEL"Intent action to register for on a service to receive side channel notifications. |
static final String |
EXTRA_USE_SIDE_CHANNEL = "android.support.useSideChannel"Notification extras key: if set to true, the posted notification should use the side channel for delivery instead of using notification manager. |
static final int |
Default notification importance: shows everywhere, allowed to makes noise, but does not visually intrude. |
static final int |
IMPORTANCE_HIGH = 4Higher notification importance: shows everywhere, allowed to makes noise and peek. |
static final int |
IMPORTANCE_LOW = 2Low notification importance: shows everywhere, but is not intrusive. |
static final int |
IMPORTANCE_MAX = 5Highest notification importance: shows everywhere, allowed to makes noise, peek, and use full screen intents. |
static final int |
IMPORTANCE_MIN = 1Min notification importance: only shows in the shade, below the fold. |
static final int |
IMPORTANCE_NONE = 0A notification with no importance: shows nowhere, is blocked. |
static final int |
IMPORTANCE_UNSPECIFIED = -1000Value signifying that the user has not expressed an importance. |
static final int |
|
static final int |
|
static final int |
|
static final int |
|
static final int |
|
Public methods |
|
|---|---|
boolean |
Returns whether notifications from the calling package are not blocked. |
boolean |
Returns whether the calling app's properly formatted notifications can appear in a promoted format, which may result in higher ranking, appearances on additional surfaces, and richer presentation. |
boolean |
Returns whether the calling app can send fullscreen intents. |
void |
cancel(int id)Cancel a previously shown notification. |
void |
Cancel a previously shown notification. |
void |
Cancel all previously shown notifications. |
void |
Creates a notification channel that notifications can be posted to. |
void |
Creates a notification channel that notifications can be posted to. |
void |
Creates a group container for |
void |
Creates a group container for |
void |
Creates multiple notification channel groups. |
void |
Creates multiple notification channel groups. |
void |
createNotificationChannels(@NonNull List<NotificationChannel> channels)Creates multiple notification channels that different notifications can be posted to. |
void |
Creates multiple notification channels that different notifications can be posted to. |
void |
deleteNotificationChannel(@NonNull String channelId)Deletes the given notification channel. |
void |
deleteNotificationChannelGroup(@NonNull String groupId)Deletes the given notification channel group, and all notification channels that belong to it. |
void |
deleteUnlistedNotificationChannels(Deletes notification channels for which ids are NOT given. |
static @NonNull NotificationManagerCompat |
Get a |
@NonNull List<StatusBarNotification> |
Recover a list of active notifications: ones that have been posted by the calling app that have not yet been dismissed by the user or |
int |
Gets the current notification interruption filter. |
static @NonNull Set<String> |
getEnabledListenerPackages(@NonNull Context context)Get the set of packages that have an enabled notification listener component within them. |
int |
Returns the user specified importance for notifications from the calling package. |
@Nullable NotificationChannel |
getNotificationChannel(@NonNull String channelId)Returns the notification channel settings for a given channel id. |
@Nullable NotificationChannel |
getNotificationChannel(Returns the notification channel settings for a given channel and |
@Nullable NotificationChannelCompat |
getNotificationChannelCompat(@NonNull String channelId)Returns the notification channel settings for a given channel id. |
@Nullable NotificationChannelCompat |
getNotificationChannelCompat(Returns the notification channel settings for a given channel and |
@Nullable NotificationChannelGroup |
getNotificationChannelGroup(@NonNull String channelGroupId)Returns the notification channel group settings for a given channel group id. |
@Nullable NotificationChannelGroupCompat |
getNotificationChannelGroupCompat(@NonNull String channelGroupId)Returns the notification channel group settings for a given channel group id. |
@NonNull List<NotificationChannelGroup> |
Returns all notification channel groups belonging to the calling app or an empty list on older SDKs which don't support Notification Channels. |
@NonNull List<NotificationChannelGroupCompat> |
Returns all notification channel groups belonging to the calling app or an empty list on older SDKs which don't support Notification Channels. |
@NonNull List<NotificationChannel> |
Returns all notification channels belonging to the calling app or an empty list on older SDKs which don't support Notification Channels. |
@NonNull List<NotificationChannelCompat> |
Returns all notification channels belonging to the calling app or an empty list on older SDKs which don't support Notification Channels. |
void |
@RequiresPermission(value = Manifest.permission.POST_NOTIFICATIONS)Post a number of notifications, to be shown in the status bar, stream, etc. |
void |
@RequiresPermission(value = Manifest.permission.POST_NOTIFICATIONS)Post a notification to be shown in the status bar, stream, etc. |
void |
@RequiresPermission(value = Manifest.permission.POST_NOTIFICATIONS)Post a notification to be shown in the status bar, stream, etc. |
Constants
ACTION_BIND_SIDE_CHANNEL
public static final String ACTION_BIND_SIDE_CHANNEL = "android.support.BIND_NOTIFICATION_SIDE_CHANNEL"
Intent action to register for on a service to receive side channel notifications. The listening service must be in the same package as an enabled NotificationListenerService.
EXTRA_USE_SIDE_CHANNEL
public static final String EXTRA_USE_SIDE_CHANNEL = "android.support.useSideChannel"
Notification extras key: if set to true, the posted notification should use the side channel for delivery instead of using notification manager.
IMPORTANCE_DEFAULT
public static final int IMPORTANCE_DEFAULT = 3
Default notification importance: shows everywhere, allowed to makes noise, but does not visually intrude.
IMPORTANCE_HIGH
public static final int IMPORTANCE_HIGH = 4
Higher notification importance: shows everywhere, allowed to makes noise and peek.
IMPORTANCE_LOW
public static final int IMPORTANCE_LOW = 2
Low notification importance: shows everywhere, but is not intrusive.
IMPORTANCE_MAX
public static final int IMPORTANCE_MAX = 5
Highest notification importance: shows everywhere, allowed to makes noise, peek, and use full screen intents.
IMPORTANCE_MIN
public static final int IMPORTANCE_MIN = 1
Min notification importance: only shows in the shade, below the fold.
IMPORTANCE_NONE
public static final int IMPORTANCE_NONE = 0
A notification with no importance: shows nowhere, is blocked.
IMPORTANCE_UNSPECIFIED
public static final int IMPORTANCE_UNSPECIFIED = -1000
Value signifying that the user has not expressed an importance. This value is for persisting preferences, and should never be associated with an actual notification.
INTERRUPTION_FILTER_ALARMS
public static final int INTERRUPTION_FILTER_ALARMS = 4
Interruption filter constant - Alarms only interruption filter - all notifications except those of category CATEGORY_ALARM are suppressed. Some audio streams are muted.
INTERRUPTION_FILTER_ALL
public static final int INTERRUPTION_FILTER_ALL = 1
Interruption filter constant - Normal interruption filter - no notifications are suppressed.
INTERRUPTION_FILTER_NONE
public static final int INTERRUPTION_FILTER_NONE = 3
Interruption filter constant - No interruptions filter - all notifications are suppressed and all audio streams (except those used for phone calls) and vibrations are muted.
INTERRUPTION_FILTER_PRIORITY
public static final int INTERRUPTION_FILTER_PRIORITY = 2
Interruption filter constant - Priority interruption filter - all notifications are suppressed except those that match the priority criteria. Some audio streams are muted. See priorityCallSenders, priorityCategories, priorityMessageSenders to define or query this criteria. Users can additionally specify packages that can bypass this interruption filter.
INTERRUPTION_FILTER_UNKNOWN
public static final int INTERRUPTION_FILTER_UNKNOWN = 0
Interruption filter constant - returned when the value is unavailable for any reason.
Public methods
areNotificationsEnabled
public boolean areNotificationsEnabled()
Returns whether notifications from the calling package are not blocked.
canPostPromotedNotifications
public boolean canPostPromotedNotifications()
Returns whether the calling app's properly formatted notifications can appear in a promoted format, which may result in higher ranking, appearances on additional surfaces, and richer presentation. Apps can request this permission by sending the user to the activity that matches the system intent action ACTION_APP_NOTIFICATION_PROMOTION_SETTINGS.
canUseFullScreenIntent
public boolean canUseFullScreenIntent()
Returns whether the calling app can send fullscreen intents.
Fullscreen intents were introduced in Android HONEYCOMB, where apps could always attach a full screen intent to their notification via setFullScreenIntent}.
Android Q introduced the USE_FULL_SCREEN_INTENT permission, where SystemUI will only show the full screen intent attached to a notification if the permission is declared in the manifest.
Starting from Android UPSIDE_DOWN_CAKE, apps may not have permission to use USE_FULL_SCREEN_INTENT. If the FSI permission is denied, SystemUI will show the notification as an expanded heads up notification on lockscreen.
To request access, add the USE_FULL_SCREEN_INTENT permission to your manifest, and use ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT to send the user to the settings page where they can grant your app the FSI permission.
cancel
public void cancel(int id)
Cancel a previously shown notification.
| Parameters | |
|---|---|
int id |
the ID of the notification |
cancel
public void cancel(@Nullable String tag, int id)
Cancel a previously shown notification.
createNotificationChannel
public void createNotificationChannel(@NonNull NotificationChannel channel)
Creates a notification channel that notifications can be posted to. This can also be used to restore a deleted channel and to update an existing channel's name, description, group, and/or importance.
The importance of an existing channel will only be changed if the new importance is lower than the current value and the user has not altered any settings on this channel.
The group of an existing channel will only be changed if the channel does not already belong to a group. All other fields are ignored for channels that already exist. It doesn't do anything on older SDKs which don't support Notification Channels.
| Parameters | |
|---|---|
@NonNull NotificationChannel channel |
the channel to create. Note that the created channel may differ from this value. If the provided channel is malformed, a RemoteException will be thrown. |
createNotificationChannel
public void createNotificationChannel(@NonNull NotificationChannelCompat channel)
Creates a notification channel that notifications can be posted to. This can also be used to restore a deleted channel and to update an existing channel's name, description, group, and/or importance.
The importance of an existing channel will only be changed if the new importance is lower than the current value and the user has not altered any settings on this channel.
The group of an existing channel will only be changed if the channel does not already belong to a group. All other fields are ignored for channels that already exist. It doesn't do anything on older SDKs which don't support Notification Channels.
| Parameters | |
|---|---|
@NonNull NotificationChannelCompat channel |
the channel to create. Note that the created channel may differ from this value. If the provided channel is malformed, a RemoteException will be thrown. |
createNotificationChannelGroup
public void createNotificationChannelGroup(@NonNull NotificationChannelGroup group)
Creates a group container for NotificationChannel objects. This can be used to rename an existing group. It doesn't do anything on older SDKs which don't support Notification Channels.
| Parameters | |
|---|---|
@NonNull NotificationChannelGroup group |
The group to create |
createNotificationChannelGroup
public void createNotificationChannelGroup(
@NonNull NotificationChannelGroupCompat group
)
Creates a group container for NotificationChannel objects. This can be used to rename an existing group. It doesn't do anything on older SDKs which don't support Notification Channels.
| Parameters | |
|---|---|
@NonNull NotificationChannelGroupCompat group |
The group to create |
createNotificationChannelGroups
public void createNotificationChannelGroups(
@NonNull List<NotificationChannelGroup> groups
)
Creates multiple notification channel groups. See createNotificationChannelGroup. It doesn't do anything on older SDKs which don't support Notification Channels.
| Parameters | |
|---|---|
@NonNull List<NotificationChannelGroup> groups |
The list of groups to create |
createNotificationChannelGroupsCompat
public void createNotificationChannelGroupsCompat(
@NonNull List<NotificationChannelGroupCompat> groups
)
Creates multiple notification channel groups. See createNotificationChannelGroup. It doesn't do anything on older SDKs which don't support Notification Channels.
| Parameters | |
|---|---|
@NonNull List<NotificationChannelGroupCompat> groups |
The list of groups to create |
createNotificationChannels
public void createNotificationChannels(@NonNull List<NotificationChannel> channels)
Creates multiple notification channels that different notifications can be posted to. See createNotificationChannel. It doesn't do anything on older SDKs which don't support Notification Channels.
| Parameters | |
|---|---|
@NonNull List<NotificationChannel> channels |
the list of channels to attempt to create. |
createNotificationChannelsCompat
public void createNotificationChannelsCompat(
@NonNull List<NotificationChannelCompat> channels
)
Creates multiple notification channels that different notifications can be posted to. See createNotificationChannel. It doesn't do anything on older SDKs which don't support Notification Channels.
| Parameters | |
|---|---|
@NonNull List<NotificationChannelCompat> channels |
the list of channels to attempt to create. |
deleteNotificationChannel
public void deleteNotificationChannel(@NonNull String channelId)
Deletes the given notification channel.
If you create a new channel with this same id, the deleted channel will be un-deleted with all of the same settings it had before it was deleted. It doesn't do anything on older SDKs which don't support Notification Channels.
deleteNotificationChannelGroup
public void deleteNotificationChannelGroup(@NonNull String groupId)
Deletes the given notification channel group, and all notification channels that belong to it. It doesn't do anything on older SDKs which don't support Notification Channels.
deleteUnlistedNotificationChannels
public void deleteUnlistedNotificationChannels(
@NonNull Collection<String> channelIds
)
Deletes notification channels for which ids are NOT given. This will NOT delete channels which are conversation children of the given channels. It doesn't do anything on older SDKs which don't support Notification Channels.
| Parameters | |
|---|---|
@NonNull Collection<String> channelIds |
the IDs of any channels which should NOT be deleted by this method. |
from
public static @NonNull NotificationManagerCompat from(@NonNull Context context)
Get a NotificationManagerCompat instance for a provided context.
getActiveNotifications
public @NonNull List<StatusBarNotification> getActiveNotifications()
Recover a list of active notifications: ones that have been posted by the calling app that have not yet been dismissed by the user or canceled by the app.
StatusBarNotification object, including the original and supplied to (via and ) as well as a copy of the original object (via ).
From Q, will also return notifications you've posted as an app's notification delegate via notifyAsPackage.
Returns an empty list on LOLLIPOP_MR1 and earlier.
| Returns | |
|---|---|
@NonNull List<StatusBarNotification> |
A list of |
getCurrentInterruptionFilter
public int getCurrentInterruptionFilter()
Gets the current notification interruption filter.
The interruption filter defines which notifications are allowed to interrupt the user (e.g. via sound &vibration) and is applied globally.
getEnabledListenerPackages
public static @NonNull Set<String> getEnabledListenerPackages(@NonNull Context context)
Get the set of packages that have an enabled notification listener component within them.
getImportance
public int getImportance()
Returns the user specified importance for notifications from the calling package.
| Returns | |
|---|---|
int |
An importance level, such as |
getNotificationChannel
public @Nullable NotificationChannel getNotificationChannel(@NonNull String channelId)
Returns the notification channel settings for a given channel id. Returns null on older SDKs which don't support Notification Channels.
getNotificationChannel
public @Nullable NotificationChannel getNotificationChannel(
@NonNull String channelId,
@NonNull String conversationId
)
Returns the notification channel settings for a given channel and conversation id. Returns the channel for the channelId on older SDKs which don't support Conversations. Returns null on older SDKs which don't support Notification Channels.
getNotificationChannelCompat
public @Nullable NotificationChannelCompat getNotificationChannelCompat(@NonNull String channelId)
Returns the notification channel settings for a given channel id. Returns null on older SDKs which don't support Notification Channels.
getNotificationChannelCompat
public @Nullable NotificationChannelCompat getNotificationChannelCompat(
@NonNull String channelId,
@NonNull String conversationId
)
Returns the notification channel settings for a given channel and conversation id. Returns the channel for the channelId on older SDKs which don't support Conversations. Returns null on older SDKs which don't support Notification Channels.
getNotificationChannelGroup
public @Nullable NotificationChannelGroup getNotificationChannelGroup(@NonNull String channelGroupId)
Returns the notification channel group settings for a given channel group id. Returns null on older SDKs which don't support Notification Channels.
getNotificationChannelGroupCompat
public @Nullable NotificationChannelGroupCompat getNotificationChannelGroupCompat(@NonNull String channelGroupId)
Returns the notification channel group settings for a given channel group id. Returns null on older SDKs which don't support Notification Channels.
getNotificationChannelGroups
public @NonNull List<NotificationChannelGroup> getNotificationChannelGroups()
Returns all notification channel groups belonging to the calling app or an empty list on older SDKs which don't support Notification Channels.
getNotificationChannelGroupsCompat
public @NonNull List<NotificationChannelGroupCompat> getNotificationChannelGroupsCompat()
Returns all notification channel groups belonging to the calling app or an empty list on older SDKs which don't support Notification Channels.
getNotificationChannels
public @NonNull List<NotificationChannel> getNotificationChannels()
Returns all notification channels belonging to the calling app or an empty list on older SDKs which don't support Notification Channels.
getNotificationChannelsCompat
public @NonNull List<NotificationChannelCompat> getNotificationChannelsCompat()
Returns all notification channels belonging to the calling app or an empty list on older SDKs which don't support Notification Channels.
notify
@RequiresPermission(value = Manifest.permission.POST_NOTIFICATIONS)
public void notify(
@NonNull List<NotificationManagerCompat.NotificationWithIdAndTag> notificationWithIdAndTags
)
Post a number of notifications, to be shown in the status bar, stream, etc. Each notification will attempt to be posted in the order provided in the
notificationWithIds list. Each notification must have a provided id and may have a provided tag. This is the preferred method for posting groups of notifications, to improve sound and animation behavior.
notify
@RequiresPermission(value = Manifest.permission.POST_NOTIFICATIONS)
public void notify(int id, @NonNull Notification notification)
Post a notification to be shown in the status bar, stream, etc.
| Parameters | |
|---|---|
int id |
the ID of the notification |
@NonNull Notification notification |
the notification to post to the system |
notify
@RequiresPermission(value = Manifest.permission.POST_NOTIFICATIONS)
public void notify(@Nullable String tag, int id, @NonNull Notification notification)
Post a notification to be shown in the status bar, stream, etc.
| Parameters | |
|---|---|
@Nullable String tag |
the string identifier for a notification. Can be |
int id |
the ID of the notification. The pair (tag, id) must be unique within your app. |
@NonNull Notification notification |
the notification to post to the system |