通知概览| Android 开发者
文章推薦指數: 80 %
通知是指Android 在您应用的界面之外显示的消息,旨在向用户提供提醒、来自他人的通信信息或您应用中的其他实时信息。
用户可以点按通知来打开应用,或 ...
平台
AndroidStudio
GooglePlay
Jetpack
Kotlin
文档
游戏
English
BahasaIndonesia
Español–AméricaLatina
Português–Brasil
TiếngViệt
中文–简体
中文–繁體
日本語
한국어
登录
文档
概览
指南
参考文档
示例
设计和质量
平台
AndroidStudio
GooglePlay
Jetpack
Kotlin
文档
概览
指南
参考文档
示例
设计和质量
游戏
应用基础知识
简介
构建首个应用
概览创建Android项目运行您的应用构建简单的界面启动另一个Activity
应用基础知识
应用资源
概览处理配置变更
本地化
本地化您的应用使用pseudolocale测试您的应用Unicode和国际化支持语言和语言区域解决方案复杂的XML资源
资源类型
概览动画颜色状态列表可绘制对象布局菜单字符串样式字体更多类型
应用清单文件
概览
通知是指Android在您应用的界面之外显示的消息,旨在向用户提供提醒、来自他人的通信信息或您应用中的其他实时信息。
用户可以点按通知来打开应用,或直接从通知中执行操作。
本页将概要介绍通知的显示位置及可用功能。
如果您想着手构建通知,请改为阅读创建通知。
如需详细了解具体设计和互动模式,请参阅通知设计指南。
在设备上的外观
通知可以在不同的位置以不同的格式显示,例如,状态栏中的图标、抽屉式通知栏中比较详细的条目、应用图标上的标志,以及在配对的穿戴式设备上自动显示。
状态栏和抽屉式通知栏
发出通知后,通知会先以图标的形式显示在状态栏中。
图1.通知图标显示在状态栏的左侧
用户可以在状态栏向下滑动以打开抽屉式通知栏,并在其中查看更多详情及对通知执行操作。
图2.抽屉式通知栏中的通知
用户可以向下拖动抽屉式通知栏中的某条通知以查看展开后的视图,其中会显示更多内容以及操作按钮(如果有)。
从Android13开始,此展开后的视图会包含一个按钮,可让用户停止具有持续前台服务的应用。
在应用或用户关闭通知之前,通知会一直显示在抽屉式通知栏中。
提醒式通知
从Android5.0开始,通知可以短暂地显示在浮动窗口中,称之为提醒式通知。
这种行为通常适用于用户应立即知晓的重要通知,而且仅在设备未锁定时才会显示。
图3.显示在前台应用前面的提醒式通知
提醒式通知会在应用发出通知后立即出现,稍后便会消失,但仍照常显示在抽屉式通知栏中。
例如,以下情况可能会触发提醒式通知:
用户的Activity处于全屏模式(应用使用fullScreenIntent)。
通知的优先级很高,且在搭载Android7.1(API级别25)及更低版本的设备上使用铃声或振动。
在搭载Android8.0(API级别26)及更高版本的设备上,通知渠道的重要程度比较高。
锁定屏幕
从Android5.0开始,通知可以显示在锁定屏幕上。
您可以采用编程方式设置您的应用在安全锁定屏幕上所发布通知的详情可见等级,甚至可以设置通知是否显示在锁定屏幕上。
用户可以通过系统设置来选择锁定屏幕通知的详情可见等级,包括选择停用所有锁定屏幕通知。
从Android8.0开始,用户可以选择停用或启用各个通知渠道的锁定屏幕通知。
图4.锁定屏幕上已隐藏敏感内容的通知
要了解详情,请参阅如何设置锁定屏幕的可见性。
应用图标的标志
在搭载Android8.0(API级别26)及更高版本的设备上支持的启动器中,应用图标通过在相应的应用启动器图标上显示彩色“标志”(又称“通知圆点”)来表示有新通知。
用户可以长按应用图标来查看该应用的通知。
然后,用户可以从该长按菜单中关闭通知或者对通知执行操作(与抽屉式通知栏类似)。
图5.通知标志和长按菜单
要详细了解标志的工作原理,请阅读通知标志。
WearOS设备
如果用户有配对的WearOS设备,那么您的所有通知都会自动显示在已配对设备上,包括展开式详情和操作按钮。
您还可以通过自定义通知在穿戴式设备上的外观以及提供不同的操作选项(包括建议的回复和语音输入回复)来提升用户体验。
如需了解详情,请参阅如何向通知中添加特定于穿戴式设备的功能。
图6.通知自动显示在已配对的WearOS设备上
通知剖析
通知的设计由系统模板决定,您的应用只需要定义模板中各个部分的内容即可。
通知的部分详情仅在展开后的视图中显示。
图7.包含基本详情的通知
图7展示了通知最常见的部分,具体如下所示:
小图标:必须提供,通过setSmallIcon()进行设置。
应用名称:由系统提供。
时间戳:由系统提供,但您可以使用setWhen()替换它或者使用setShowWhen(false)隐藏它。
大图标:可选内容(通常仅用于联系人照片,请勿将其用于应用图标),通过setLargeIcon()进行设置。
标题:可选内容,通过setContentTitle()进行设置。
文本:可选内容,通过setContentText()进行设置。
我们强烈建议您使用系统模板,以确保设计能够很好地兼容所有设备。
不过,如有必要,您可以创建自定义通知布局。
如需详细了解如何创建包含上述功能及其他功能的通知,请参阅创建通知。
通知操作
尽管并非强制要求,但每个通知都应在用户点按时打开相应的应用Activity。
除了这种默认的通知操作之外,您还可以添加可在通知中完成与应用相关任务的操作按钮(通常不需要打开Activity),如图9所示。
图9.包含操作按钮的通知
从Android7.0(API级别24)开始,您还可以添加直接在通知中回复消息或输入其他文字的操作。
从Android10(API级别29)开始,平台可以自动生成操作按钮,此类按钮包含基于intent的建议操作。
创建通知一文详细介绍了如何添加操作按钮。
要求解锁设备
用户可能会在设备的锁定屏幕上看到通知操作。
如果指定的通知操作会导致应用启动activity或发送直接回复,用户必须先解锁设备,然后应用才能调用该通知操作。
在Android12(API级别31)及更高版本中,您可以配置通知操作,使应用只能在设备解锁后调用该操作,无论该操作启动的是哪个工作流。
此选项有助于为锁定设备上的通知增添一层额外的安全保障。
如需在应用调用指定的通知操作之前要求解锁设备,请在创建通知操作时将true传入setAuthenticationRequired(),如以下代码段所示:
Kotlin
valmoreSecureNotification=Notification.Builder(
context,NotificationListenerVerifierActivity.TAG)
.addAction(...)
//Thisnotificationalwaysrequestsauthenticationwheninvoked
//fromalockscreen.
.setAuthenticationRequired(true)
.build()
Java
NotificationmoreSecureNotification=newNotification.Builder(
context,NotificationListenerVerifierActivity.TAG)
.addAction(...)
//Thisnotificationalwaysrequestsauthenticationwheninvoked
//fromalockscreen.
.setAuthenticationRequired(true)
.build();
展开式通知
默认情况下,通知的文字内容会被截断以放在一行。
如果您需要长一些的通知,可以通过应用其他模板启用更大的展开式文本区域,如图8所示。
图8.适合更多文本的展开式通知
您还可以使用图片、收件箱样式、聊天对话或媒体播放控件来创建展开式通知。
如需了解详情,请阅读创建展开式通知。
通知更新和分组
为了使用户在您提供后续更新时不会遭遇多个通知或多余通知的轰炸,您不妨考虑更新现有通知(而不是发出新通知),或者考虑使用收件箱样式的通知来显示会话更新。
不过,如有必要发出多个通知,则应将这些孤立的通知分为一组(可在搭载Android7.0及更高版本的设备上这样做)。
借助通知组,您可以以一条摘要的形式在抽屉式通知栏中将多个通知收拢成一条通知消息。
用户便可以展开通知以查看每个通知的详情。
用户可以逐级展开通知组以及其中的每条通知以查看详情。
图10.收起和展开后的通知组
如需了解如何将通知添加到某个组,请参阅创建通知组。
注意:如果同一应用发出4条或更多条通知且未指定分组,系统会自动将这些通知分为一组。
通知渠道
从Android8.0(API级别26)开始,必须为所有通知分配渠道,否则通知将不会显示。
通过将通知归类到不同的渠道中,用户可以停用您应用的特定通知渠道(而非停用您的所有通知),还可以控制每个渠道的视觉和听觉选项,所有这些操作都在Android系统设置中完成(如图11所示)。
用户还可以长按通知以更改所关联渠道的行为。
在搭载Android7.1(API级别25)及更低版本的设备上,用户仅可以按应用来管理通知(在搭载Android7.1及更低版本的设备上,每个应用其实只有一个渠道)。
图11.时钟应用及该应用的某个渠道的通知设置
注意:界面将渠道称作“类别”。
一个应用可以有多个通知渠道(每个渠道对应于该应用发出的每类通知)。
应用还可以创建通知渠道来响应您应用的用户做出的选择。
例如,您可以为用户在短信应用中创建的每个会话组设置单独的通知渠道。
在搭载Android8.0及更高版本的设备上,渠道还可用于指定通知的重要程度等级。
因此,发布到同一通知渠道的所有通知的行为都相同。
要了解详情,请参阅创建和管理通知渠道。
通知的重要程度
Android利用通知的重要程度来决定通知应在多大程度上干扰用户(视觉上和听觉上)。
通知的重要程度越高,干扰程度就越高。
在搭载Android8.0(API级别26)及更高版本的设备上,通知的重要程度由通知发布到的渠道的importance决定。
用户可以在系统设置中更改通知渠道的重要程度(图12)。
在搭载Android7.1(API级别25)及更低版本的设备上,每条通知的重要程度均由通知的priority决定。
图12.在搭载Android8.0及更高版本的设备上,用户可以更改每个渠道的重要程度
可能的重要程度等级如下所示:
紧急:发出提示音,并以提醒式通知的形式显示。
高:发出提示音。
中:无提示音。
低:无提示音,且不会在状态栏中显示。
无论重要程度如何,所有通知都会在非干扰性的系统界面位置显示,例如,显示在抽屉式通知栏中,以及在启动器图标上作为标志显示(但您可以修改通知标志的外观)。
如需了解详情,请参阅如何设置重要程度。
勿扰模式
从Android5.0(API级别21)开始,用户可以启用勿扰模式,以关闭所有通知的提示音和振动。
通知仍会在系统界面中照常显示,除非用户另有指定。
勿扰模式包含3种不同的级别:
完全静音:阻止所有提示音和振动(包括闹钟、音乐、视频和游戏)。
仅限闹钟:阻止所有提示音和振动,闹钟除外。
仅限优先事项:用户可以配置哪些系统级类别可以打扰他们(如仅限闹钟、提醒、活动、来电或短信等)。
对于短信和来电,用户还可以选择根据发送者或来电者进行过滤(图13)。
图13.用户可以根据系统级类别(左侧)和短信发送者或来电者(右侧)允许显示通知。
在搭载Android8.0(API级别26)及更高版本的设备上,用户还可以通过按渠道替换勿扰模式来允许特定于应用的类别(又称渠道)显示通知。
例如,付款类应用可能会有与取款和存款相关的通知渠道。
用户便可以选择允许在优先模式下显示取款通知和/或存款通知。
在搭载Android7.1(API级别25)及更低版本的设备上,用户可以按应用(而不是按渠道)允许显示通知。
如需针对上述用户设置合理配置您的通知,您必须设置系统级类别和渠道。
前台服务的通知
如果您的应用正在运行“前台服务”(一种长时间在后台运行且用户可以察觉到的Service,如媒体播放器),则需要发出通知。
不能像关闭其他通知那样关闭这种通知。
要移除此类通知,必须停止运行服务或者将其从“前台”状态中移除。
要了解详情,请阅读在前台运行服务。
如果您要构建媒体播放器,另请参阅对前台服务使用MediaStyle通知。
发布限制
从Android8.1(API级别27)开始,应用无法每秒发出一次以上的通知提示音。
如果应用在一秒内发出了多条通知,这些通知都会按预期显示,但是每秒中只有第一条通知发出提示音。
不过,Android还对通知更新频率设定了限制。
如果您过于频繁地发布有关某条通知的更新(不到一秒内发布多个),系统可能会放弃部分更新。
通知的兼容性
自Android1.0开始,通知系统界面以及与通知相关的API就在不断发展。
如需在使用最新通知API功能的同时仍然支持旧版设备,请使用支持库通知API:NotificationCompat及其子类,以及NotificationManagerCompat。
这样一来,您就无需编写条件代码来检查API级别,因为这些API会为您代劳。
NotificationCompat随着平台的发展不断更新,旨在纳入最新的方法。
需要注意的是,某个方法在NotificationCompat中可用并不能保证可以在旧版设备上提供相应功能。
在某些情况下,调用新引入的API会导致旧版设备出现空操作。
例如,NotificationCompat.addAction()仅在搭载Android4.1(API级别16)及更高版本的设备上显示操作按钮。
下面总结了Android通知的一些最重要的行为变化。
Android4.1,API级别16
推出了展开式通知模板(称为通知样式),可以提供较大的通知内容区域来显示信息。
用户可以通过单指向上/向下滑动的手势来展开通知。
还支持以按钮的形式向通知添加其他操作。
允许用户在设置中按应用关闭通知。
Android4.4,API级别19和20
向API中添加了通知监听器服务。
API级别20中新增了AndroidWear(现已更名为WearOS)支持。
Android5.0,API级别21
推出了锁定屏幕和提醒式通知。
用户现在可以将手机设为勿扰模式,并配置允许哪些通知在设备处于“仅限优先事项”模式时打扰他们。
向API集添加了通知是否在锁定屏幕上显示的方法(setVisibility()),以及指定通知文本的“公开”版本的方法。
添加了setPriority()方法,告知系统通知的“干扰性”(例如,将其设为“高”可使通知以提醒式通知的形式显示)。
向AndroidWear(现已更名为WearOS)设备添加了通知堆栈支持。
使用setGroup()将通知放入堆栈。
请注意,平板电脑和手机尚不支持通知堆栈。
通知堆栈以后会称为组或Bundle。
Android7.0,API级别24
重新设置了通知模板的样式以强调主打图片和头像。
添加了三个通知模板:一个用于短信应用,另外两个用于借助展开式选项和其他系统装饰来装饰自定义内容视图。
向手持设备(手机和平板电脑)添加了对通知组的支持。
使用与Android5.0(API级别21)中推出的AndroidWear(现已更名为WearOS)通知堆栈相同的API。
用户可以使用内嵌回复功能直接在通知内进行回复(他们输入的文本将转发到通知的父应用)。
Android8.0,API级别26
现在必须将各个通知放入特定渠道中。
现在,用户可以按渠道关闭通知,而非关闭来自某个应用的所有通知。
包含有效通知的应用将在主屏幕/启动器屏幕上相应应用图标的上方显示通知“标志”。
现在,用户可以从抽屉式通知栏中暂停某个通知。
您可以为通知设置自动超时时间。
您还可以设置通知的背景颜色。
部分与通知行为相关的API已从Notification移至NotificationChannel。
例如,在搭载Android8.0及更高版本的设备中,使用NotificationChannel.setImportance(),而非NotificationCompat.Builder.setPriority()。
Android13.0,API级别33
添加了一项运行时权限。
若要让您的应用能够发送非豁免通知,用户必须向您的应用授予此权限。
下一页
arrow_forward
创建通知
ContentandcodesamplesonthispagearesubjecttothelicensesdescribedintheContentLicense.JavaandOpenJDKaretrademarksorregisteredtrademarksofOracleand/oritsaffiliates.
Lastupdated2022-09-01UTC.
[{
"type":"thumb-down",
"id":"missingTheInformationINeed",
"label":"没有我需要的信息"
},{
"type":"thumb-down",
"id":"tooComplicatedTooManySteps",
"label":"太复杂/步骤太多"
},{
"type":"thumb-down",
"id":"outOfDate",
"label":"内容需要更新"
},{
"type":"thumb-down",
"id":"translationIssue",
"label":"翻译问题"
},{
"type":"thumb-down",
"id":"samplesCodeIssue",
"label":"示例/代码问题"
},{
"type":"thumb-down",
"id":"otherDown",
"label":"其他"
}]
[{
"type":"thumb-up",
"id":"easyToUnderstand",
"label":"易于理解"
},{
"type":"thumb-up",
"id":"solvedMyProblem",
"label":"解决了我的问题"
},{
"type":"thumb-up",
"id":"otherUp",
"label":"其他"
}]
Twitter
在Twitter上关注@AndroidDev
YouTube
在YouTube上访问“AndroidDevelopers”频道
LinkedIn
在LinkedIn上与Android开发者社区交流沟通
关于Android
Android
适用于企业的Android
安全
源代码
新闻
博客
播客
发现
游戏
机器学习
隐私权政策
5G
Android设备
大屏幕
WearOS
AndroidTV
AndroidforCars
AndroidThings
Chrome操作系统设备
版本
Android11
Android10
Pie
Oreo
Nougat
Marshmallow
Lollipop
KitKat
文档和下载
AndroidStudio指南
开发者指南
API参考
下载Studio
AndroidNDK
支持
报告平台错误
报告文档错误
GooglePlaysupport
参加调查研究
Android
Chrome
Firebase
GoogleCloudPlatform
所有产品
隐私权政策
许可
品牌指南
通过电子邮件接收资讯和提示
订阅
English
BahasaIndonesia
Español–AméricaLatina
Português–Brasil
TiếngViệt
中文–简体
中文–繁體
日本語
한국어
延伸文章資訊
- 1提醒事項:任務、列表和待辦事項- Google Play 應用程式
這是一個容易使用,功能先進的應用程式,一個好的提醒小助手。 具有先進的功能,快速記錄生日,賬單付款或其他事项,並在適當時間收到提醒。您也可將提醒事項裡的事件 ...
- 2Android 內建「通知紀錄」讓你不小心滑掉通知也不怕
其實,透過Android 系統內建的功能,你也可以得到類似社群網站活動紀錄那樣,可以將在裝置上推送的所有被你意外刷掉的通知,全都整合在一個頁面之中– ...
- 3通知概览| Android 开发者
通知是指Android 在您应用的界面之外显示的消息,旨在向用户提供提醒、来自他人的通信信息或您应用中的其他实时信息。用户可以点按通知来打开应用,或 ...
- 45個地點提醒App 比時間提醒更能產生真正有效提醒 - 電腦玩物
所以今天這篇文章,我想跟大家推薦Android 五個免費的「地點提醒」 App ,善用地點提醒,你會發現能夠更有效的產生在正確時機指引我們行動的提示。 我是一個一有空檔就沉迷 ...
- 5Android Studio 日期到提醒功能 - iT 邦幫忙
本人高中生新手最近因為上課接觸到Android Studio 然後是用JAVA寫的,但我從來沒學過只能靠網路摸索. 程式希望有一個功能是日期到提醒目前已經可以用Datepicker選日期 ...