通知是 Android 在应用界面之外显示的消息, 向用户提供提醒、来自他人的通信信息或其他 适时获取信息用户点按通知即可打开 应用或直接在通知中执行操作。
本页将概要介绍通知的显示位置及可用功能。要开始创建通知,请阅读创建 通知。
有关通知设计和互动模式的详情,请参阅 通知设计 指南。
在设备上的外观
通知会自动向不同位置以不同格式的用户显示。 通知以图标的形式显示在状态栏中, 抽屉式通知栏,以及应用图标上的标志。其他通知 在配对的穿戴式设备上显示。
状态栏和抽屉式通知栏
发出通知后,通知先以图标的形式在状态栏中显示。
图 1. 通知图标显示在状态的左侧 栏。
用户可以在状态栏向下滑动以打开抽屉式通知栏, 他们可以查看更多详细信息,并根据通知执行操作。
图 2. 抽屉式通知栏中的通知。
用户可以向下拖动抽屉式通知栏中的某条通知以查看展开后的视图,其中会显示更多内容以及操作按钮(如果有)。距离开始还有 Android 13,此展开视图包含一个按钮,让用户能够 停止具有当前前台运行状态的应用 服务。
通知会在抽屉式通知栏中保持可见状态,直到它被关闭 由应用或用户发出
提醒式通知
从 Android 5.0 开始,通知可以短暂地以悬浮 窗口(称为浮动通知)。这种行为通常适用于 用户需要立即了解的通知,并且这些通知 。
图 3. 系统会在 。
浮动通知会在您的应用发出通知时显示。它 会在不久后消失,但仍会在抽屉式通知栏中显示,
可能会触发浮动通知的条件包括:
用户的 Activity 处于全屏模式,例如当应用使用
fullScreenIntent
。通知具有较高的优先级,并且会在开启时采用铃声或振动 搭载 Android 7.1(API 级别 25)及更低版本的设备。
锁定屏幕
从 Android 5.0 开始,通知可以显示在锁定屏幕上。
您可以通过编程方式设置您的应用发布的通知是否在 安全锁定屏幕,若适用,还会显示其详细程度。
用户可以使用系统设置来选择锁定时显示的信息详细程度 屏幕通知或停用所有锁定屏幕通知。起始内容 Android 8.0,则用户可以在 Android 8.0 中停用或启用锁定屏幕通知, 通知渠道。
图 4. 锁定屏幕上包含敏感内容的通知 已隐藏。
如需了解详情,请参阅设置锁定屏幕 可见性。
应用图标的标志
在搭载 Android 8.0(API 级别 26)及更高版本的设备上受支持的启动器中, 应用图标使用称为 通知圆点。
用户可以触摸和按住应用程序图标以查看该应用程序的通知。用户 可以通过该菜单关闭通知或对通知执行操作(与通知类似) 抽屉式导航栏。
图 5. 通知标志以及触控和按住菜单。
要详细了解标记的工作原理,请阅读修改通知 徽章。
Wear OS 设备
如果用户有配对的 Wear OS 设备,则您的所有通知都会显示在该设备上 包括可展开的详细信息和操作按钮。
您可以自定义 和通过提供不同的操作来实现,包括 建议的回复和语音输入回复。有关详情,请参阅如何将 穿戴式设备特有的功能 通知。
图 6. 通知会自动显示在已配对的 Wear OS 上 设备。
通知剖析
通知的设计由系统模板决定,您的应用 定义了模板各个部分的内容。关于 通知只会显示在展开视图中。
图 7. 包含基本详情的通知。
图 7 显示了通知最常见的部分,如下所示:
- 小图标:必填;使用
setSmallIcon()
。 - 应用名称:由系统提供。
- 时间戳:由系统提供,但您也可以使用
setWhen()
或使用setShowWhen(false)
。 - 大图标:可选;通常仅用于联系人照片。
请勿将其用作应用图标。设置方式
setLargeIcon()
。 - 标题:可选;使用
setContentTitle()
。 - 文字:可选;使用
setContentText()
。
我们强烈建议使用系统模板,以便在 所有设备。如有需要,您可以创建自定义通知 布局。
有关如何创建包含这些功能的通知的详细信息,请参阅 请参阅创建 通知。
通知操作
虽然不是必需的,但最好让每个通知都打开 相应的应用活动除了这个默认的 通知操作,您可以添加操作按钮来完成应用相关 任务(通常无需打开 activity),因为 如图 8 所示。
图 8. 包含操作按钮的通知。
从 Android 7.0(API 级别 24)开始,您可以添加要回复的操作 消息或直接在通知中输入其他文字。
从 Android 10(API 级别 29)开始,平台可以自动生成操作按钮,此类按钮包含基于 intent 的建议操作。
有关添加操作按钮的详细说明,请参阅创建 通知。
要求解锁设备
用户可能会在设备的锁定屏幕上看到通知操作。如果 通知操作导致应用启动 activity 或发送直接回复, 用户必须先解锁设备,然后应用才能调用该通知操作。
在 Android 12(API 级别 31)及更高版本中,您可以配置通知操作 以便应用必须解锁设备才能调用该操作; 无论该操作启动的是哪个工作流此选项会在 为锁定设备上的通知提供安全保障
要求在应用调用特定通知之前将设备解锁
操作,将 true
传入
setAuthenticationRequired()
创建通知操作时,如以下代码段所示:
Kotlin
val moreSecureNotification = Notification.Action.Builder(...) // This notification always requests authentication when invoked // from a lock screen. .setAuthenticationRequired(true) .build()
Java
Notification moreSecureNotification = new Notification.Action.Builder(...) // This notification always requests authentication when invoked // from a lock screen. .setAuthenticationRequired(true) .build();
展开式通知
默认情况下,通知的文字内容会被截断以放在一行。如果 想要更长的通知,可以启用更大的文本区域 (如图 9 所示)。
图 9. 适用于大型广告的可展开通知 文本。
您还可以使用收件箱样式的图片、 聊天对话或媒体播放控件。如需更多信息 请参阅创建展开式通知。
通知更新和分组
为了避免在用户进行以下操作时收到过多通知或多余的通知, 如有其他更新,请更新现有的 通知 而不是发出新的验证码或使用收件箱样式的 通知以显示 会话更新。
不过,如果需要发送多个通知,请考虑进行分组 将单独的通知分为一组(适用于 Android 7.0 及更高版本)。
通过通知组,您可以将多个通知折叠为一个帖子, 显示摘要的抽屉式通知栏。用户可以逐步展开 通知组及其中的每个通知以获取更多详细信息,如 图 10.
图 10. 收起和展开的通知组。
要了解如何将通知添加到群组,请参阅创建 通知。
通知渠道
从 Android 8.0(API 级别 26)开始,所有通知都必须分配给 否则它们就不会显示这可让用户停用特定通知 而不是停用所有通知。用户可以 通过 Android 系统控制每个频道的视觉和听觉选项 如图 11 所示。用户还可以轻触和按住通知 更改关联渠道的行为。
在搭载 Android 7.1(API 级别 25)及更低版本的设备上,用户可以管理 通知。每个应用实际上只有一个渠道 (Android 7.1 及更低版本)。
图 11. 时钟应用及该应用的某个渠道的通知设置。
应用可以针对应用发出的每种通知类型使用单独的渠道。 应用还可以创建通知渠道来响应 用户。例如,您可以为每个渠道设置单独的通知渠道 用户在即时通讯应用中创建的对话组。
渠道还可用于指定重要性级别 通知,这样所有通知都发布到同一个 都具有相同的行为具体说明如下 部分。
如需了解详情,请参阅创建和管理通知 渠道。
通知的重要程度
Android 利用通知的重要程度来决定通知的重要性 通知会直观地和声音打断用户。重要性越高 通知越容易干扰用户,
在 Android 设备上
7.1(API 级别 25)及更低版本,则通知的重要性由
通知的
priority
。
在 Android 8.0(API 级别 26)及更高版本中,通知的重要性为
取决于
importance
渠道的标识符。用户可以更改
一个通知渠道,如图 12 所示。
图 12. 用户可以在 Android 设备上更改每个渠道的重要程度 8.0 及更高版本。
可能的重要性级别和相关的通知行为如下: 以下:
紧急:发出提示音,并以浮动通知的形式显示。
高:发出提示音。
中:不发出声音。
低:不发出提示音,且不显示在状态栏中。
无论重要程度如何,所有通知都会显示在非干扰系统中 界面位置,例如抽屉式通知栏中以及启动器上的标志 图标。不过,您可以修改通知的外观 徽章。
有关详情,请参阅如何设置 重要性。
勿扰模式
从 Android 5.0(API 级别 21)开始,用户可以启用勿扰模式、 此设置会关闭所有通知的提示音和振动。通知仍在 会在系统界面中照常显示,除非用户另行指定。
“请勿打扰”模式有三个级别:
- 完全静音:阻止所有提示音和振动(包括闹钟、音乐、视频和游戏)。
- 仅限闹钟:阻止所有提示音和振动,闹钟除外。
- 仅限优先事项:用户可以配置哪些系统级类别可以 打扰他们,例如仅限闹钟、提醒、活动、来电或消息。 对于消息和来电,用户可以根据发送者或来电者进行过滤,如下所示 如图 13 所示。
图 13. 用户可以根据以下条件允许通知: 系统级类别(左)以及发送者或来电者(右)。
在 Android 8.0(API 级别 26)及更高版本中,用户可额外允许 特定类别(也称为 设置,具体方法是逐一覆盖“勿扰”设置。对于 例如,付款应用可能具有 提款和存款。用户可以允许显示取款通知、存款 通知,或者同时启用这两种通知。
在搭载 Android 7.1(API 级别 25)及更低版本的设备上,用户可以允许 而不是在单个应用上 查看这些报告
要为这些用户设置配置通知,您必须设置 系统级 类别。
前台服务的通知
如果您的应用在前台运行,则必须发出通知
服务 - Service
(在
长期存在且可被用户注意到的背景,例如媒体
。此通知不能像其他通知一样关闭。移除
必须停止服务或从前台移除服务
状态。
如需了解详情,请参阅前台 服务。如果您要构建媒体 另请参阅在后台播放媒体。
帖子限制
从 Android 8.1(API 级别 27)开始,应用无法发出通知提示音 超过每秒一次。如果应用在一秒内发出了多条通知,这些通知都会按预期显示,但是每秒中只有第一条通知发出提示音。
不过,Android 还对通知更新频率设定了限制。如果您 过于频繁地发布单个通知的更新,例如, 一秒钟,系统可能会丢弃更新。
通知的兼容性
Android 通知系统界面和与通知相关的 API 持续
不断演变。在支持旧版通知 API 的同时,使用最新的 Notifications API 功能
使用支持库通知 API,
NotificationCompat
、
及其子类,
NotificationManagerCompat
。
这样,您就无需编写条件代码来检查 API 级别,因为这些
由 API 负责处理。
NotificationCompat
会随着平台的发展而更新,以纳入最新的
方法。不过,某个方法在 NotificationCompat
中是否可用
保证在旧款设备上提供相应功能。在某些
用例,调用新引入的 API 会导致在旧设备上出现空操作。
下面汇总了各 API 级别最显著的行为变更 Android 通知。
Android 5.0,API 级别 21
引入了锁定屏幕和浮动通知。
允许用户将手机设置为“请勿打扰”模式,并配置 当设备处于开机状态时,允许显示通知打断他们 “仅限优先事项”模式
添加了一些方法,用于设置是否在锁定屏幕上显示通知; 例如
setVisibility()
), 以及指定通知文字的“公开”版本。添加了
setPriority()
方法,用于告知系统 。例如,如果将优先级设为“高”, 通知以浮动通知的形式显示。向 Android Wear(现已更名为 Wear OS)添加通知堆栈支持 设备。通过以下方式将通知放入堆叠中:
setGroup()
。 以下设备不支持通知堆栈(之后称为“组”或“包”) Android 7.0(API 级别 24)之前的版本。
Android 7.0,API 级别 24
调整通知模板的样式,以强调主打图片和 头像。
添加了三个通知模板:一个用于即时通讯应用,另外两个 以及如何使用可扩展选项和其他 系统装饰。
添加了对手机和平板电脑等手持设备的支持, 通知组。使用与 Android Wear(现在称为 Wear)相同的 API Android 5.0(API 级别 21)中引入的通知堆栈。
允许用户使用内嵌回复在通知内进行回复。他们可以 文本,然后被路由到通知的父应用。
Android 8.0,API 级别 26
将单个通知置于 channel。
允许用户按渠道关闭通知,而非关闭所有通知 通知。
让包含有效通知的应用在顶部显示通知标志 将其应用图标显示在主屏幕或启动器屏幕上。
允许用户延后抽屉式通知栏中的通知。您可以设置自动 超时。
通过该属性,您可以设置通知的背景颜色。
将一些有关通知行为的 API 从
Notification
至NotificationChannel
。 例如,使用NotificationChannel.setImportance()
而非NotificationCompat.Builder.setPriority()
(适用于 Android 8.0 及更高版本)。
Android 13.0,API 级别 33
- 添加了 runtime 权限。针对您的 发送应用 不可豁免 通知,用户必须向您的应用授予此权限。
Android 14.0,API 级别 34
将全屏 intent 通知限制为仅提供通话和 闹钟。使用
NotificationManager.canUseFullScreenIntent
API 执行以下操作: 检查您的应用是否具有权限。否则,您的应用可以使用ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT
,可启动设置页面 以便用户可以授予权限通过允许 用户关闭通知操作,即使 已设置
Notification.FLAG_ONGOING_EVENT
标志。这不适用于 如果Notification.FLAG_ONGOING_EVENT
标志为CallStyle
,则发出通知 设备政策控制器 (DPC) 和支持软件包, 企业。这同样不适用于手机处于锁定状态或 用户选择全部清除。