NotificationManager
public
class
NotificationManager
extends Object
| java.lang.Object | |
| ↳ | android.app.NotificationManager |
Class to notify the user of events that happen. This is how you tell the user that something has happened in the background.
Notifications can take different forms:
- A persistent icon that goes in the status bar and is accessible through the launcher, (when the user selects it, a designated Intent can be launched),
- Turning on or flashing LEDs on the device, or
- Alerting the user by flashing the backlight, playing a sound, or vibrating.
Each of the notify methods takes an int id parameter and optionally a
String tag parameter, which may be null. These parameters
are used to form a pair (tag, id), or (null, id) if tag is
unspecified. This pair identifies this notification from your app to the
system, so that pair should be unique within your app. If you call one
of the notify methods with a (tag, id) pair that is currently active and
a new set of notification parameters, it will be updated. For example,
if you pass a new status bar icon, the old icon in the status bar will
be replaced with the new one. This is also the same tag and id you pass
to the cancel(int) or cancel(java.lang.String, int) method to clear
this notification.
Developer Guides
For a guide to creating notifications, read the Status Bar Notifications developer guide.
See also:
Summary
Nested classes | |
|---|---|
class |
NotificationManager.Policy
Notification policy configuration. |
Constants | |
|---|---|
String |
ACTION_APP_BLOCK_STATE_CHANGED
Intent that is broadcast when an application is blocked or unblocked. |
String |
ACTION_AUTOMATIC_ZEN_RULE
Activity Action: Launch an Automatic Zen Rule configuration screen
Input: Optionally, |
String |
ACTION_AUTOMATIC_ZEN_RULE_STATUS_CHANGED
Intent that is broadcast when the status of an |
String |
ACTION_INTERRUPTION_FILTER_CHANGED
Intent that is broadcast when the state of getCurrentInterruptionFilter() changes. |
String |
ACTION_NOTIFICATION_CHANNEL_BLOCK_STATE_CHANGED
Intent that is broadcast when a |
String |
ACTION_NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED
Intent that is broadcast when a |
String |
ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED
Intent that is broadcast when the state of |
String |
ACTION_NOTIFICATION_POLICY_CHANGED
Intent that is broadcast when the state of getNotificationPolicy() changes. |
int |
AUTOMATIC_RULE_STATUS_DISABLED
Constant value for |
int |
AUTOMATIC_RULE_STATUS_ENABLED
Constant value for |
int |
AUTOMATIC_RULE_STATUS_REMOVED
Constant value for |
int |
AUTOMATIC_RULE_STATUS_UNKNOWN
Constant value for |
String |
EXTRA_AUTOMATIC_RULE_ID
Used as an optional string extra on |
String |
EXTRA_AUTOMATIC_ZEN_RULE_ID
String extra for |
String |
EXTRA_AUTOMATIC_ZEN_RULE_STATUS
Integer extra for |
String |
EXTRA_BLOCKED_STATE
Extra for |
String |
EXTRA_NOTIFICATION_CHANNEL_GROUP_ID
Extra for |
String |
EXTRA_NOTIFICATION_CHANNEL_ID
Extra for |
int |
IMPORTANCE_DEFAULT
Default notification importance: shows everywhere, makes noise, but does not visually intrude. |
int |
IMPORTANCE_HIGH
Higher notification importance: shows everywhere, makes noise and peeks. |
int |
IMPORTANCE_LOW
Low notification importance: Shows in the shade, and potentially in the status bar
(see |
int |
IMPORTANCE_MAX
Unused. |
int |
IMPORTANCE_MIN
Min notification importance: only shows in the shade, below the fold. |
int |
IMPORTANCE_NONE
A notification with no importance: does not show in the shade. |
int |
IMPORTANCE_UNSPECIFIED
Value signifying that the user has not expressed an importance. |
int |
INTERRUPTION_FILTER_ALARMS
|
int |
INTERRUPTION_FILTER_ALL
|
int |
INTERRUPTION_FILTER_NONE
|
int |
INTERRUPTION_FILTER_PRIORITY
|
int |
INTERRUPTION_FILTER_UNKNOWN
|
String |
META_DATA_AUTOMATIC_RULE_TYPE
A required |
String |
META_DATA_RULE_INSTANCE_LIMIT
An optional |
Public methods | |
|---|---|
String
|
addAutomaticZenRule(AutomaticZenRule automaticZenRule)
Creates the given zen rule. |
boolean
|
areBubblesAllowed()
Gets whether all notifications posted by this app can appear outside of the notification shade, floating over other apps' content. |
boolean
|
areNotificationsEnabled()
Returns whether notifications from the calling package are blocked. |
boolean
|
areNotificationsPaused()
Returns whether notifications from this package are temporarily hidden. |
boolean
|
canNotifyAsPackage(String pkg)
Returns whether you are allowed to post notifications on behalf of a given package, with
|
void
|
cancel(int id)
Cancels a previously posted notification. |
void
|
cancel(String tag, int id)
Cancels a previously posted notification. |
void
|
cancelAll()
Cancel all previously shown notifications. |
void
|
cancelAsPackage(String targetPackage, String tag, int id)
Cancels a previously posted notification. |
void
|
createNotificationChannel(NotificationChannel channel)
Creates a notification channel that notifications can be posted to. |
void
|
createNotificationChannelGroup(NotificationChannelGroup group)
Creates a group container for |
void
|
createNotificationChannelGroups(List<NotificationChannelGroup> groups)
Creates multiple notification channel groups. |
void
|
createNotificationChannels(List<NotificationChannel> channels)
Creates multiple notification channels that different notifications can be posted to. |
void
|
deleteNotificationChannel(String channelId)
Deletes the given notification channel. |
void
|
deleteNotificationChannelGroup(String groupId)
Deletes the given notification channel group, and all notification channels that belong to it. |
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 |
AutomaticZenRule
|
getAutomaticZenRule(String id)
Returns the AutomaticZenRule with the given id, if it exists and the caller has access. |
Map<String, AutomaticZenRule>
|
getAutomaticZenRules()
Returns AutomaticZenRules owned by the caller. |
NotificationManager.Policy
|
getConsolidatedNotificationPolicy()
Returns the currently applied notification policy. |
final
int
|
getCurrentInterruptionFilter()
Gets the current notification interruption filter. |
int
|
getImportance()
Returns the user specified importance for notifications from the calling package. |
NotificationChannel
|
getNotificationChannel(String channelId)
Returns the notification channel settings for a given channel id. |
NotificationChannel
|
getNotificationChannel(String channelId, String conversationId)
Returns the notification channel settings for a given channel and
|
NotificationChannelGroup
|
getNotificationChannelGroup(String channelGroupId)
Returns the notification channel group settings for a given channel group id. |
List<NotificationChannelGroup>
|
getNotificationChannelGroups()
Returns all notification channel groups belonging to the calling app. |
List<NotificationChannel>
|
getNotificationChannels()
Returns all notification channels belonging to the calling package. |
String
|
getNotificationDelegate()
Returns the |
NotificationManager.Policy
|
getNotificationPolicy()
Gets the current user-specified default notification policy. |
boolean
|
isNotificationListenerAccessGranted(ComponentName listener)
Checks whether the user has approved a given
|
boolean
|
isNotificationPolicyAccessGranted()
Checks the ability to modify notification do not disturb policy for the calling package. |
void
|
notify(int id, Notification notification)
Post a notification to be shown in the status bar. |
void
|
notify(String tag, int id, Notification notification)
Posts a notification to be shown in the status bar. |
void
|
notifyAsPackage(String targetPackage, String tag, int id, Notification notification)
Posts a notification as a specified package to be shown in the status bar. |
boolean
|
removeAutomaticZenRule(String id)
Deletes the automatic zen rule with the given id. |
void
|
setAutomaticZenRuleState(String id, Condition condition)
Informs the notification manager that the state of an |
final
void
|
setInterruptionFilter(int interruptionFilter)
Sets the current notification interruption filter. |
void
|
setNotificationDelegate(String delegate)
Allows a package to post notifications on your behalf using
|
void
|
setNotificationPolicy(NotificationManager.Policy policy)
Sets the current notification policy. |
boolean
|
shouldHideSilentStatusBarIcons()
Returns whether the user wants silent notifications (see |
boolean
|
updateAutomaticZenRule(String id, AutomaticZenRule automaticZenRule)
Updates the given zen rule. |
Inherited methods | |
|---|---|
Constants
ACTION_APP_BLOCK_STATE_CHANGED
public static final String ACTION_APP_BLOCK_STATE_CHANGED
Intent that is broadcast when an application is blocked or unblocked.
This broadcast is only sent to the app whose block state has changed.
Input: nothing
Output: EXTRA_BLOCKED_STATE
Constant Value: "android.app.action.APP_BLOCK_STATE_CHANGED"
ACTION_AUTOMATIC_ZEN_RULE
public static final String ACTION_AUTOMATIC_ZEN_RULE
Activity Action: Launch an Automatic Zen Rule configuration screen
Input: Optionally, EXTRA_AUTOMATIC_RULE_ID, if the configuration screen for an
existing rule should be displayed. If the rule id is missing or null, apps should display
a configuration screen where users can create a new instance of the rule.
Output: Nothing
You can have multiple activities handling this intent, if you support multiple
AutomaticZenRule. In order for the system to properly display all of your
rule types so that users can create new instances or configure existing ones, you need
to add some extra metadata (META_DATA_AUTOMATIC_RULE_TYPE)
to your activity tag in your manifest. If you'd like to limit the number of rules a user
can create from this flow, you can additionally optionally include
META_DATA_RULE_INSTANCE_LIMIT.
For example,
<meta-data
android:name="android.app.zen.automatic.ruleType"
android:value="@string/my_condition_rule">
</meta-data>
<meta-data
android:name="android.app.zen.automatic.ruleInstanceLimit"
android:value="1">
</meta-data>
See also:
Constant Value: "android.app.action.AUTOMATIC_ZEN_RULE"
ACTION_AUTOMATIC_ZEN_RULE_STATUS_CHANGED
public static final String ACTION_AUTOMATIC_ZEN_RULE_STATUS_CHANGED
Intent that is broadcast when the status of an AutomaticZenRule has changed.
Use this to know whether you need to continue monitor to device state in order to
provide up-to-date states (with setAutomaticZenRuleState(java.lang.String, android.service.notification.Condition)) for
this rule.
EXTRA_AUTOMATIC_ZEN_RULE_ID
Output: EXTRA_AUTOMATIC_ZEN_RULE_STATUS
Constant Value: "android.app.action.AUTOMATIC_ZEN_RULE_STATUS_CHANGED"
ACTION_INTERRUPTION_FILTER_CHANGED
public static final String ACTION_INTERRUPTION_FILTER_CHANGED
Intent that is broadcast when the state of getCurrentInterruptionFilter() changes. This broadcast is only sent to registered receivers.
Constant Value: "android.app.action.INTERRUPTION_FILTER_CHANGED"
ACTION_NOTIFICATION_CHANNEL_BLOCK_STATE_CHANGED
public static final String ACTION_NOTIFICATION_CHANNEL_BLOCK_STATE_CHANGED
Intent that is broadcast when a NotificationChannel is blocked
(when NotificationChannel#getImportance() is IMPORTANCE_NONE) or unblocked
(when NotificationChannel#getImportance() is anything other than
IMPORTANCE_NONE).
This broadcast is only sent to the app that owns the channel that has changed.
Input: nothing
Output: EXTRA_NOTIFICATION_CHANNEL_ID
Output: EXTRA_BLOCKED_STATE
Constant Value: "android.app.action.NOTIFICATION_CHANNEL_BLOCK_STATE_CHANGED"
ACTION_NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED
public static final String ACTION_NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED
Intent that is broadcast when a NotificationChannelGroup is
NotificationChannelGroup#isBlocked() or unblocked.
This broadcast is only sent to the app that owns the channel group that has changed.
Input: nothing
Output: EXTRA_NOTIFICATION_CHANNEL_GROUP_ID
Output: EXTRA_BLOCKED_STATE
Constant Value: "android.app.action.NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED"
ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED
public static final String ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED
Intent that is broadcast when the state of isNotificationPolicyAccessGranted()
changes.
This broadcast is only sent to registered receivers, and only to the apps that have changed.
Constant Value: "android.app.action.NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED"
ACTION_NOTIFICATION_POLICY_CHANGED
public static final String ACTION_NOTIFICATION_POLICY_CHANGED
Intent that is broadcast when the state of getNotificationPolicy() changes. This broadcast is only sent to registered receivers.
Constant Value: "android.app.action.NOTIFICATION_POLICY_CHANGED"
AUTOMATIC_RULE_STATUS_DISABLED
public static final int AUTOMATIC_RULE_STATUS_DISABLED
Constant value for EXTRA_AUTOMATIC_ZEN_RULE_STATUS - the given rule currently
exists but is disabled. You do not need to continue to provide state changes via
setAutomaticZenRuleState(java.lang.String, android.service.notification.Condition) until the rule is reenabled.
Constant Value: 2 (0x00000002)
AUTOMATIC_RULE_STATUS_ENABLED
public static final int AUTOMATIC_RULE_STATUS_ENABLED
Constant value for EXTRA_AUTOMATIC_ZEN_RULE_STATUS - the given rule currently
exists and is enabled. You should continue to provide state changes via
setAutomaticZenRuleState(java.lang.String, android.service.notification.Condition).
Constant Value: 1 (0x00000001)
AUTOMATIC_RULE_STATUS_REMOVED
public static final int AUTOMATIC_RULE_STATUS_REMOVED
Constant value for EXTRA_AUTOMATIC_ZEN_RULE_STATUS - the given rule has been
deleted. Further calls to setAutomaticZenRuleState(java.lang.String, android.service.notification.Condition) will be
ignored.
Constant Value: 3 (0x00000003)
AUTOMATIC_RULE_STATUS_UNKNOWN
public static final int AUTOMATIC_RULE_STATUS_UNKNOWN
Constant value for EXTRA_AUTOMATIC_ZEN_RULE_STATUS - the current status of the
rule is unknown at your target sdk version, and you should continue to provide state changes
via setAutomaticZenRuleState(java.lang.String, android.service.notification.Condition).
Constant Value: -1 (0xffffffff)
EXTRA_AUTOMATIC_RULE_ID
public static final String EXTRA_AUTOMATIC_RULE_ID
Used as an optional string extra on ACTION_AUTOMATIC_ZEN_RULE intents. If
provided, contains the id of the AutomaticZenRule (as returned from
NotificationManager#addAutomaticZenRule(AutomaticZenRule)) for which configuration
settings should be displayed.
Constant Value: "android.app.extra.AUTOMATIC_RULE_ID"
EXTRA_AUTOMATIC_ZEN_RULE_ID
public static final String EXTRA_AUTOMATIC_ZEN_RULE_ID
String extra for ACTION_AUTOMATIC_ZEN_RULE_STATUS_CHANGED containing the id of the
AutomaticZenRule (see addAutomaticZenRule(android.app.AutomaticZenRule)) that has
changed.
Constant Value: "android.app.extra.AUTOMATIC_ZEN_RULE_ID"
EXTRA_AUTOMATIC_ZEN_RULE_STATUS
public static final String EXTRA_AUTOMATIC_ZEN_RULE_STATUS
Integer extra for ACTION_AUTOMATIC_ZEN_RULE_STATUS_CHANGED containing the state of
the AutomaticZenRule.
The value will be one of AUTOMATIC_RULE_STATUS_ENABLED,
AUTOMATIC_RULE_STATUS_DISABLED, AUTOMATIC_RULE_STATUS_REMOVED,
AUTOMATIC_RULE_STATUS_UNKNOWN.
Constant Value: "android.app.extra.AUTOMATIC_ZEN_RULE_STATUS"
EXTRA_BLOCKED_STATE
public static final String EXTRA_BLOCKED_STATE
Extra for ACTION_NOTIFICATION_CHANNEL_BLOCK_STATE_CHANGED or
ACTION_NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED containing the new blocked
state as a boolean.
The value will be true if this channel or group is now blocked and false if
this channel or group is now unblocked.
Constant Value: "android.app.extra.BLOCKED_STATE"
EXTRA_NOTIFICATION_CHANNEL_GROUP_ID
public static final String EXTRA_NOTIFICATION_CHANNEL_GROUP_ID
Extra for ACTION_NOTIFICATION_CHANNEL_GROUP_BLOCK_STATE_CHANGED containing the id
of the NotificationChannelGroup which has a new blocked state.
The value will be the NotificationChannelGroup#getId() of the group.
Constant Value: "android.app.extra.NOTIFICATION_CHANNEL_GROUP_ID"
EXTRA_NOTIFICATION_CHANNEL_ID
public static final String EXTRA_NOTIFICATION_CHANNEL_ID
Extra for ACTION_NOTIFICATION_CHANNEL_BLOCK_STATE_CHANGED containing the id of the
NotificationChannel which has a new blocked state.
The value will be the NotificationChannel#getId() of the channel.
Constant Value: "android.app.extra.NOTIFICATION_CHANNEL_ID"
IMPORTANCE_DEFAULT
public static final int IMPORTANCE_DEFAULT
Default notification importance: shows everywhere, makes noise, but does not visually intrude.
Constant Value: 3 (0x00000003)
IMPORTANCE_HIGH
public static final int IMPORTANCE_HIGH
Higher notification importance: shows everywhere, makes noise and peeks. May use full screen intents.
Constant Value: 4 (0x00000004)
IMPORTANCE_LOW
public static final int IMPORTANCE_LOW
Low notification importance: Shows in the shade, and potentially in the status bar
(see shouldHideSilentStatusBarIcons()), but is not audibly intrusive.
Constant Value: 2 (0x00000002)
IMPORTANCE_MAX
public static final int IMPORTANCE_MAX
Unused.
Constant Value: 5 (0x00000005)
IMPORTANCE_MIN
public static final int IMPORTANCE_MIN
Min notification importance: only shows in the shade, below the fold. This should
not be used with Service#startForeground(int, Notification)
since a foreground service is supposed to be something the user cares about so it does
not make semantic sense to mark its notification as minimum importance. If you do this
as of Android version Build.VERSION_CODES.O, the system will show
a higher-priority notification about your app running in the background.
Constant Value: 1 (0x00000001)
IMPORTANCE_NONE
public static final int IMPORTANCE_NONE
A notification with no importance: does not show in the shade.
Constant Value: 0 (0x00000000)
IMPORTANCE_UNSPECIFIED
public static final int IMPORTANCE_UNSPECIFIED
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.
Constant Value: -1000 (0xfffffc18)
INTERRUPTION_FILTER_ALARMS
public static final int INTERRUPTION_FILTER_ALARMS
Interruption filter constant -
Alarms only interruption filter - all notifications except those of category
Notification#CATEGORY_ALARM are suppressed. Some audio streams are muted.
Constant Value: 4 (0x00000004)
INTERRUPTION_FILTER_ALL
public static final int INTERRUPTION_FILTER_ALL
Interruption filter constant -
Normal interruption filter - no notifications are suppressed.
Constant Value: 1 (0x00000001)
INTERRUPTION_FILTER_NONE
public static final int INTERRUPTION_FILTER_NONE
Interruption filter constant -
No interruptions filter - all notifications are suppressed and all audio streams (except
those used for phone calls) and vibrations are muted.
Constant Value: 3 (0x00000003)
INTERRUPTION_FILTER_PRIORITY
public static final int INTERRUPTION_FILTER_PRIORITY
Interruption filter constant -
Priority interruption filter - all notifications are suppressed except those that match
the priority criteria. Some audio streams are muted. See
Policy#priorityCallSenders, Policy#priorityCategories,
Policy#priorityMessageSenders to define or query this criteria. Users can
additionally specify packages that can bypass this interruption filter.
Constant Value: 2 (0x00000002)
INTERRUPTION_FILTER_UNKNOWN
public static final int INTERRUPTION_FILTER_UNKNOWN
Interruption filter constant - returned when
the value is unavailable for any reason.
Constant Value: 0 (0x00000000)
META_DATA_AUTOMATIC_RULE_TYPE
public static final String META_DATA_AUTOMATIC_RULE_TYPE
A required meta-data tag for activities that handle
ACTION_AUTOMATIC_ZEN_RULE.
This tag should contain a localized name of the type of the zen rule provided by the
activity.
Constant Value: "android.service.zen.automatic.ruleType"
META_DATA_RULE_INSTANCE_LIMIT
public static final String META_DATA_RULE_INSTANCE_LIMIT
An optional meta-data tag for activities that handle
ACTION_AUTOMATIC_ZEN_RULE.
This tag should contain the maximum number of rule instances that
can be created for this rule type. Omit or enter a value <= 0 to allow unlimited instances.
Constant Value: "android.service.zen.automatic.ruleInstanceLimit"
Public methods
addAutomaticZenRule
public String addAutomaticZenRule (AutomaticZenRule automaticZenRule)
Creates the given zen rule.
Throws a SecurityException if policy access is not granted to this package.
See isNotificationPolicyAccessGranted().
| Parameters | |
|---|---|
automaticZenRule |
AutomaticZenRule: the rule to create. |
| Returns | |
|---|---|
String |
The id of the newly created rule; null if the rule could not be created. |
areBubblesAllowed
public boolean areBubblesAllowed ()
Gets whether all notifications posted by this app can appear outside of the notification shade, floating over other apps' content.
This value will be ignored for notifications that are posted to channels that do not
allow bubbles (NotificationChannel#canBubble().
| Returns | |
|---|---|
boolean |
|
See also:
areNotificationsEnabled
public boolean areNotificationsEnabled ()
Returns whether notifications from the calling package are blocked.
| Returns | |
|---|---|
boolean |
|
areNotificationsPaused
public boolean areNotificationsPaused ()
Returns whether notifications from this package are temporarily hidden. This
could be done because the package was marked as distracting to the user via
PackageManager#setDistractingPackageRestrictions(String[], int) or because the
package is PackageManager#setPackagesSuspended(String[], boolean, PersistableBundle,
PersistableBundle, SuspendDialogInfo) suspended.
| Returns | |
|---|---|
boolean |
|
canNotifyAsPackage
public boolean canNotifyAsPackage (String pkg)
Returns whether you are allowed to post notifications on behalf of a given package, with
notifyAsPackage(java.lang.String, java.lang.String, int, android.app.Notification).
See setNotificationDelegate(java.lang.String).
| Parameters | |
|---|---|
pkg |
String: This value cannot be null. |
| Returns | |
|---|---|
boolean |
|
cancel
public void cancel (int id)
Cancels a previously posted notification.
If the notification does not currently represent a
Service#startForeground(int, Notification), it will be
removed from the UI and live
notification listeners
will be informed so they can remove the notification from their UIs.
| Parameters | |
|---|---|
id |
int |
cancel
public void cancel (String tag, int id)
Cancels a previously posted notification.
If the notification does not currently represent a
Service#startForeground(int, Notification), it will be
removed from the UI and live
notification listeners
will be informed so they can remove the notification from their UIs.
| Parameters | |
|---|---|
tag |
String: This value may be null. |
id |
int |
cancelAll
public void cancelAll ()
Cancel all previously shown notifications. See cancel(int) for the
detailed behavior.
cancelAsPackage
public void cancelAsPackage (String targetPackage, String tag, int id)
Cancels a previously posted notification.
If the notification does not currently represent a
Service#startForeground(int, Notification), it will be
removed from the UI and live
notification listeners
will be informed so they can remove the notification from their UIs.
This method may be used by a notification delegate to
cancel notifications that they have posted via notifyAsPackage(java.lang.String, java.lang.String, int, android.app.Notification).
| Parameters | |
|---|---|
targetPackage |
String: The package to cancel the notification as. If this package is not your
package, you can only cancel notifications you posted with
{@link #notifyAsPackage(java.lang.String,java.lang.String,int,android.app.Notification). |
tag |
String: A string identifier for this notification. May be null. |
id |
int: An identifier for this notification.
This value cannot be null. |
createNotificationChannel
public void createNotificationChannel (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 name and description should only be changed if the locale changes or in response to the user renaming this channel. For example, if a user has a channel named 'John Doe' that represents messages from a 'John Doe', and 'John Doe' changes his name to 'John Smith,' the channel can be renamed to match.
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 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.
| Parameters | |
|---|---|
channel |
NotificationChannel: 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.
This value cannot be null. |
createNotificationChannelGroup
public void createNotificationChannelGroup (NotificationChannelGroup group)
Creates a group container for NotificationChannel objects.
This can be used to rename an existing group.
Group information is only used for presentation, not for behavior. Groups are optional for channels, and you can have a mix of channels that belong to groups and channels that do not.
For example, if your application supports multiple accounts, and those accounts will have similar channels, you can create a group for each account with account specific labels instead of appending account information to each channel's label.
| Parameters | |
|---|---|
group |
NotificationChannelGroup: The group to create
This value cannot be null. |
createNotificationChannelGroups
public void createNotificationChannelGroups (List<NotificationChannelGroup> groups)
Creates multiple notification channel groups.
| Parameters | |
|---|---|
groups |
List: The list of groups to create
This value cannot be null. |
createNotificationChannels
public void createNotificationChannels (List<NotificationChannel> channels)
Creates multiple notification channels that different notifications can be posted to. See
createNotificationChannel(android.app.NotificationChannel).
| Parameters | |
|---|---|
channels |
List: the list of channels to attempt to create.
This value cannot be null. |
deleteNotificationChannel
public void deleteNotificationChannel (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.
| Parameters | |
|---|---|
channelId |
String |
deleteNotificationChannelGroup
public void deleteNotificationChannelGroup (String groupId)
Deletes the given notification channel group, and all notification channels that belong to it.
| Parameters | |
|---|---|
groupId |
String |
getActiveNotifications
public 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 cancel(java.lang.String, int)ed by the app.
tag and id supplied to
notify()
(via StatusBarNotification#getTag() and
StatusBarNotification#getId()) as well as a copy of the original
Notification object (via StatusBarNotification#getNotification()).
From Build.VERSION_CODES#Q, will also return notifications you've posted as an
app's notification delegate via
NotificationManager#notifyAsPackage(String, String, int, Notification).
| Returns | |
|---|---|
StatusBarNotification[] |
An array of StatusBarNotification. |
getAutomaticZenRule
public AutomaticZenRule getAutomaticZenRule (String id)
Returns the AutomaticZenRule with the given id, if it exists and the caller has access.
Throws a SecurityException if policy access is not granted to this package.
See isNotificationPolicyAccessGranted().
Returns null if there are no zen rules that match the given id, or if the calling package
doesn't own the matching rule. See AutomaticZenRule#getOwner.
| Parameters | |
|---|---|
id |
String |
| Returns | |
|---|---|
AutomaticZenRule |
|
getAutomaticZenRules
public Map<String, AutomaticZenRule> getAutomaticZenRules ()
Returns AutomaticZenRules owned by the caller.
Throws a SecurityException if policy access is not granted to this package.
See isNotificationPolicyAccessGranted().
| Returns | |
|---|---|
Map<String, AutomaticZenRule> |
|
getConsolidatedNotificationPolicy
public NotificationManager.Policy getConsolidatedNotificationPolicy ()
Returns the currently applied notification policy.
If getCurrentInterruptionFilter() is equal to INTERRUPTION_FILTER_ALL,
then the consolidated notification policy will match the default notification policy
returned by getNotificationPolicy().
| Returns | |
|---|---|
NotificationManager.Policy |
This value cannot be null. |
getCurrentInterruptionFilter
public final 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.
| Returns | |
|---|---|
int |
Value is INTERRUPTION_FILTER_NONE, INTERRUPTION_FILTER_PRIORITY, INTERRUPTION_FILTER_ALARMS, INTERRUPTION_FILTER_ALL, or INTERRUPTION_FILTER_UNKNOWN |
getImportance
public int getImportance ()
Returns the user specified importance for notifications from the calling package.
| Returns | |
|---|---|
int |
Value is IMPORTANCE_UNSPECIFIED, IMPORTANCE_NONE, IMPORTANCE_MIN, IMPORTANCE_LOW, IMPORTANCE_DEFAULT, or IMPORTANCE_HIGH |
getNotificationChannel
public NotificationChannel getNotificationChannel (String channelId)
Returns the notification channel settings for a given channel id.
The channel must belong to your package, or to a package you are an approved notification
delegate for (see canNotifyAsPackage(java.lang.String)), or it will not be returned. To query
a channel as a notification delegate, call this method from a context created for that
package (see Context#createPackageContext(String, int)).
| Parameters | |
|---|---|
channelId |
String |
| Returns | |
|---|---|
NotificationChannel |
|
getNotificationChannel
public NotificationChannel getNotificationChannel (String channelId, String conversationId)
Returns the notification channel settings for a given channel and
ShortcutInfo#getId().
The channel must belong to your package, or to a package you are an approved notification
delegate for (see canNotifyAsPackage(java.lang.String)), or it will not be returned. To query
a channel as a notification delegate, call this method from a context created for that
package (see Context#createPackageContext(String, int)).
| Parameters | |
|---|---|
channelId |
String: This value cannot be null. |
conversationId |
String: This value cannot be null. |
| Returns | |
|---|---|
NotificationChannel |
This value may be null. |
getNotificationChannelGroup
public NotificationChannelGroup getNotificationChannelGroup (String channelGroupId)
Returns the notification channel group settings for a given channel group id. The channel group must belong to your package, or null will be returned.
| Parameters | |
|---|---|
channelGroupId |
String |
| Returns | |
|---|---|
NotificationChannelGroup |
|
getNotificationChannelGroups
public List<NotificationChannelGroup> getNotificationChannelGroups ()
Returns all notification channel groups belonging to the calling app.
| Returns | |
|---|---|
List<NotificationChannelGroup> |
|
getNotificationChannels
public List<NotificationChannel> getNotificationChannels ()
Returns all notification channels belonging to the calling package.
Approved notification delegates (see canNotifyAsPackage(java.lang.String)) can query
notification channels belonging to packages they are the delegate for. To do so, call this
method from a context created for that package (see
Context#createPackageContext(String, int)).
| Returns | |
|---|---|
List<NotificationChannel> |
|
getNotificationDelegate
public String getNotificationDelegate ()
Returns the delegate that can post notifications on
your behalf, if there currently is one.
| Returns | |
|---|---|
String |
This value may be null. |
getNotificationPolicy
public NotificationManager.Policy getNotificationPolicy ()
Gets the current user-specified default notification policy.
| Returns | |
|---|---|
NotificationManager.Policy |
|
isNotificationListenerAccessGranted
public boolean isNotificationListenerAccessGranted (ComponentName listener)
Checks whether the user has approved a given
NotificationListenerService.
The listener service must belong to the calling app.
Apps can request notification listener access by sending the user to the activity that
matches the system intent action
Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS.
| Parameters | |
|---|---|
listener |
ComponentName |
| Returns | |
|---|---|
boolean |
|
isNotificationPolicyAccessGranted
public boolean isNotificationPolicyAccessGranted ()
Checks the ability to modify notification do not disturb policy for the calling package.
Returns true if the calling package can modify notification policy.
Apps can request policy access by sending the user to the activity that matches the system
intent action Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS.
Use ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED to listen for
user grant or denial of this access.
| Returns | |
|---|---|
boolean |
|
notify
public void notify (int id,
Notification notification)
Post a notification to be shown in the status bar. If a notification with the same id has already been posted by your application and has not yet been canceled, it will be replaced by the updated information.
| Parameters | |
|---|---|
id |
int: An identifier for this notification unique within your
application. |
notification |
Notification: A Notification object describing what to show the user. Must not
be null. |
notify
public void notify (String tag, int id, Notification notification)
Posts a notification to be shown in the status bar. If a notification with
the same tag and id has already been posted by your application and has not yet been
canceled, it will be replaced by the updated information.
All listener services will
be granted Intent#FLAG_GRANT_READ_URI_PERMISSION access to any Uri
provided on this notification or the
NotificationChannel this notification is posted to using
Context#grantUriPermission(String, Uri, int). Permission will be revoked when the
notification is canceled, or you can revoke permissions with
Context#revokeUriPermission(Uri, int).
| Parameters | |
|---|---|
tag |
String: A string identifier for this notification. May be null. |
id |
int: An identifier for this notification. The pair (tag, id) must be unique
within your application. |
notification |
Notification: A Notification object describing what to
show the user. Must not be null. |
notifyAsPackage
public void notifyAsPackage (String targetPackage, String tag, int id, Notification notification)
Posts a notification as a specified package to be shown in the status bar. If a notification
with the same tag and id has already been posted for that package and has not yet been
canceled, it will be replaced by the updated information.
All listener services will
be granted Intent#FLAG_GRANT_READ_URI_PERMISSION access to any Uri
provided on this notification or the
NotificationChannel this notification is posted to using
Context#grantUriPermission(String, Uri, int). Permission will be revoked when the
notification is canceled, or you can revoke permissions with
Context#revokeUriPermission(Uri, int).
| Parameters | |
|---|---|
targetPackage |
String: The package to post the notification as. The package must have granted
you access to post notifications on their behalf with
setNotificationDelegate(java.lang.String).
This value cannot be null. |
tag |
String: A string identifier for this notification. May be null.
This value may be null. |
id |
int: An identifier for this notification. The pair (tag, id) must be unique
within your application. |
notification |
Notification: A Notification object describing what to
show the user. Must not be null.
This value cannot be null. |
removeAutomaticZenRule
public boolean removeAutomaticZenRule (String id)
Deletes the automatic zen rule with the given id.
Throws a SecurityException if policy access is not granted to this package.
See isNotificationPolicyAccessGranted().
Callers can only delete rules that they own. See AutomaticZenRule#getOwner.
| Parameters | |
|---|---|
id |
String: the id of the rule to delete. |
| Returns | |
|---|---|
boolean |
Whether the rule was successfully deleted. |
setAutomaticZenRuleState
public void setAutomaticZenRuleState (String id, Condition condition)
Informs the notification manager that the state of an AutomaticZenRule has changed.
Use this method to put the system into Do Not Disturb mode or request that it exits Do Not
Disturb mode. The calling app must own the provided AutomaticZenRule.
This method can be used in conjunction with or as a replacement to
ConditionProviderService.notifyCondition(Condition).
| Parameters | |
|---|---|
id |
String: The id of the rule whose state should change
This value cannot be null. |
condition |
Condition: The new state of this rule
This value cannot be null. |
setInterruptionFilter
public final void setInterruptionFilter (int interruptionFilter)
Sets 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.
Only available if policy access is granted to this package. See
isNotificationPolicyAccessGranted().
| Parameters | |
|---|---|
interruptionFilter |
int: Value is INTERRUPTION_FILTER_NONE, INTERRUPTION_FILTER_PRIORITY, INTERRUPTION_FILTER_ALARMS, INTERRUPTION_FILTER_ALL, or INTERRUPTION_FILTER_UNKNOWN |
setNotificationDelegate
public void setNotificationDelegate (String delegate)
Allows a package to post notifications on your behalf using
notifyAsPackage(java.lang.String, java.lang.String, int, android.app.Notification).
This can be used to allow persistent processes to post notifications based on messages
received on your behalf from the cloud, without your process having to wake up.
You can check if you have an allowed delegate with getNotificationDelegate() and
revoke your delegate by passing null to this method.
| Parameters | |
|---|---|
delegate |
String: Package name of the app which can send notifications on your behalf.
This value may be null. |
setNotificationPolicy
public void setNotificationPolicy (NotificationManager.Policy policy)
Sets the current notification policy.
Only available if policy access is granted to this package.
See isNotificationPolicyAccessGranted().
| Parameters | |
|---|---|
policy |
NotificationManager.Policy: The new desired policy.
This value cannot be null. |
shouldHideSilentStatusBarIcons
public boolean shouldHideSilentStatusBarIcons ()
Returns whether the user wants silent notifications (see IMPORTANCE_LOW to appear
in the status bar.
Only available for notification
listeners.
| Returns | |
|---|---|
boolean |
|
updateAutomaticZenRule
public boolean updateAutomaticZenRule (String id, AutomaticZenRule automaticZenRule)
Updates the given zen rule.
Throws a SecurityException if policy access is not granted to this package.
See isNotificationPolicyAccessGranted().
Callers can only update rules that they own. See AutomaticZenRule#getOwner.
| Parameters | |
|---|---|
id |
String: The id of the rule to update |
automaticZenRule |
AutomaticZenRule: the rule to update. |
| Returns | |
|---|---|
boolean |
Whether the rule was successfully updated. |
Content and code samples on this page are subject to the licenses described in the Content License. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2020-09-30 UTC.