通知概览| Android 开发者

文章推薦指數: 80 %
投票人數:10人

通知是指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资源 资源类型 概览动画颜色状态列表可绘制对象布局菜单字符串样式字体更多类型 应用清单文件 概览 设备 设备兼容性 概览屏幕兼容性概览支持不同的像素密度声明受限屏幕支持 多APK支持 概览针对不同的API级别创建多个APK针对不同的屏幕尺寸创建多个APK针对不同的GL纹理创建多个APK创建多个具有多个尺寸的APK支持不同的语言和文化支持不同的平台版本GooglePlay上的过滤器 平板电脑、大屏设备和可折叠设备 大屏幕使用入门媒体投影增强的信箱模式 构建自适应界面 支持不同的屏幕尺寸自适应界面的导航将界面迁移到自适应布局activity嵌入多窗口支持大屏幕上的输入兼容性 针对可折叠设备打造应用 了解可折叠设备让应用支持折叠功能在可折叠设备上测试应用 Wear 使用入门WearOS应用开发原则升级到最新版本的WearOSWearOS应用开发与移动应用开发WearOS界面 使用入门 WearOS开发者在线课程创建和运行穿戴式应用调试WearOS应用截取Wear界面屏幕截图 叠加层 概览通过穿戴式设备播放音频身份验证独立应用请求权限检测位置显示在“最近用过”和“应用恢复”部分中 使用Compose构建界面 在WearOS上使用JetpackCompose按钮卡片条状标签列表页面指示器选择器位置指示器进度指示器滑块步进控件滑动即可关闭切换条状标签实时信息 使用视图构建界面 在WearOS上构建基于视图的界面处理不同的手表形状屏幕选项创建列表导航在Wear上退出全屏activity显示确认动画让应用始终显示在Wear上 卡片和复杂功能 卡片概览表盘复杂功能向复杂功能提供数据 通知 WearOS上的通知通知的桥接选项持续性活动 处理数据 在WearOS上发送和同步数据WearOS上的网络访问和同步访问WearableDataLayer传输资源收发消息处理数据层事件使用DataLayerAPI同步数据项 用户输入 实体按钮旋转输入在Wear中创建输入法语音 健康服务 概览活动数据和锻炼被动数据更新使用合成数据提供商 设计 设计原则使用入门互动类型屏幕形状通知复杂功能卡片卡片设计系统叠加层持续性活动确认叠加层断开连接指示灯权限消息选择控件发布与延迟导航权限登录硬件按钮颜色排版图标下载WearMaterial主题 创建表盘主题 概览设计表盘构建表盘服务绘制表盘向表盘添加复杂功能创建互动式表盘提供配置activity解决常见问题通过硬件加速提升性能优化性能和电池续航时间 WatchFaceStudio WatchFaceStudio键盘快捷键管理WatchFaceStudio项目使用WatchFaceStudio创建表盘主题在WatchFaceStudio中构建复杂功能标记表达式语言设置在WatchFaceStudio中始终开启陀螺效应构建并从WatchFaceStudio上传测试您的表盘常见问题解答Wear应用质量打包WearOS应用分发到WearOS平台打造中国版WearOS应用WearOS版本说明 AndroidTV 概览 开发TV应用 概览TV应用开发入门AndroidXTV库处理TV硬件管理TV控制器构建TV布局屏幕键盘创建TV导航在GoogleTV上提高用户互动度的最佳做法 构建TV播放应用 概览 界面指南和LeanbackAPI 创建目录浏览器提供卡片视图构建详情视图使用传输控件电视上的播放控件添加引导步骤向初次使用的用户介绍您的应用实现媒体会话“闻曲知音”卡片中的后台播放功能音频功能匹配内容的帧速率 帮助用户在TV上查找内容 概览 推荐TV内容 概览主屏幕上的频道视频节目属性音频节目属性游戏节目属性 接下来观看 添加节目属性应用开发者准则电视服务提供商准则预览视频AndroidN及更早版本中的建议使TV应用可供搜索在TV应用内进行搜索 制作TV游戏 概览在对延迟敏感的影音在线播放应用中使用在线播放保护功能 开发TV输入服务 概览开发TV输入服务使用频道数据管理TV用户交互支持时移支持内容录制TV应用核对清单 TV无障碍功能 无障碍功能最佳做法TalkBack评估示例采用系统字幕设置自定义视图无障碍功能支持自定义视图无障碍功能示例 版本 适用于TV的Android12 适用于TV的Android13(Beta版) 概览TV的新变化 AndroidforCars 概览 开发汽车媒体应用 开发汽车媒体应用添加对AndroidAuto的支持添加对AndroidAutomotiveOS的支持构建AndroidAuto即时通讯应用 构建车载导航和地图注点应用 使用AndroidforCars应用库构建车载地图注点应用构建车载导航应用添加对AndroidAuto的支持添加对AndroidAutomotiveOS的支持构建AndroidAutomotiveOS视频应用测试Android车载应用分发Android汽车应用适用于汽车的GooglePlay服务AndroidAutomotiveOS中的通知 Chrome操作系统设备 概览构建适用于Chrome操作系统的应用针对Chrome操作系统优化应用准备您的开发环境Chromebook的应用清单兼容性应用的Chrome操作系统设备支持Chromebook上的应用呈现差异窗口管理调整Chrome操作系统上的游戏在Chrome操作系统上流畅播放动画在Chrome操作系统中运行的Android应用的测试用例 应用架构 简介 应用架构指南 概览 界面层 概览界面事件网域层数据层学习衔接课程 架构组件 界面层库 视图绑定 概览从Kotlin合成迁移到视图绑定 数据绑定库 概览使用入门布局和绑定表达式使用可观察的数据对象生成的绑定类绑定适配器将布局视图绑定到架构组件双向数据绑定 生命周期感知型组件 处理生命周期ViewModelLiveData保存界面状态ViewModel的已保存状态模块将Kotlin协程与生命周期感知型组件一起使用 Paging库 概览加载并显示分页数据从网络和数据库加载页面转换数据流管理和显示加载状态测试Paging实现迁移到Paging3 Paging2 概览显示分页列表加载分页数据 数据层库 DataStore WorkManager 概览使用入门 方法指南 定义您的WorkRequest工作状态管理工作观察工作器的中间进度将工作链接在一起测试Worker实现使用WorkManager进行集成测试调试WorkManager 高级概念 配置和初始化 WorkManager中的线程处理 概览用Worker处理线程用CoroutineWorker处理线程用RxWorker处理线程用ListenableWorker处理线程支持长时间运行的工作器从FirebaseJobDispatcher迁移从GCMNetworkManager迁移 应用入口点 Activity Activity简介Activity生命周期Activity状态变更测试您的Activity任务和返回栈进程和应用生命周期Parcelable和Bundle加载器“最近”屏幕针对从后台启动activity的限制 应用快捷方式 概览创建快捷方式添加功能管理快捷方式使用快捷方式的最佳做法 应用导航 导航原则针对不同外形规格进行设计处理配置变更 Navigation组件 概览使用入门创建目的地设计导航图嵌套图全局操作转到目的地支持多个返回堆栈条件导航在目的地之间传递数据为目标创建深层链接在目的地之间添加动画过渡效果使用NavigationUI更新界面组件KotlinDSL以编程方式进行交互使用功能模块进行导航多模块项目的最佳做法测试导航添加新的目的地类型迁移到Navigation组件 Fragment 概览创建FragmentFragment管理器Fragment事务在Fragment之间添加动画过渡效果Fragment生命周期保存与Fragment相关的状态与Fragment通信使用应用栏使用DialogFragment显示对话框调试fragment测试fragment 应用链接 概览启用指向应用内容的链接验证应用链接为免安装应用创建应用链接使用ViewPager创建包含标签页的滑动视图使用ViewPager2创建包含标签页的滑动视图提供自定义返回导航 依赖项注入 概览手动依赖项注入使用Hilt实现依赖项注入在多模块应用中使用Hilt将Hilt和其他Jetpack库一起使用Hilt测试指南Hilt和Dagger注解备忘单 Dagger Dagger基础知识在Android应用中使用Dagger在多模块应用中使用Dagger 应用启动 核心主题 应用兼容性 概览兼容性框架工具针对非SDK接口的限制 与其他应用交互 概览向另一个应用发送用户获取Activity的结果允许其他应用启动您的activity 软件包可见性 概览了解自动可见的软件包声明软件包可见性需求实现常见用例测试软件包可见性 intent和intent过滤器 概览常见Intent 界面 概览 布局 概览使用ConstraintLayout构建自适应界面 使用MotionLayout向布局中添加运动 概览使用MotionLayout的轮播界面MotionLayout示例 MotionLayoutXML参考文档 概览使用RecyclerView创建列表高级RecyclerView自定义创建卡片式布局创建双窗格布局 改善布局性能 概览优化布局层次结构通过重复使用布局视图加载延迟线性布局适配器视图相对布局 自定义视图组件 概览创建自定义视图类实现自定义绘图使视图可交互优化视图针对可折叠设备设计应用 外观和风格 MaterialDesign样式和主题背景深色主题圆滑边角自适应图标添加悬浮操作按钮创建阴影和剪辑视图 文本 自动调整TextView的大小可下载字体XML中的字体 表情符号 支持新式表情符号表情符号兼容性放大镜微件Span按钮复选框单选按钮切换按钮微调框选择器提示 通知 概览创建通知创建展开式通知显示有时效性的通知从通知启动Activity创建一组通知创建和管理通知渠道修改通知标志创建自定义通知 启动画面 概览迁移现有的启动画面对话气泡 添加应用栏 概览设置应用栏添加和处理操作添加向上操作使用操作视图和操作提供程序 窗口边衬区 概览全屏显示沉浸模式支持刘海屏控制软件键盘 支持滑动刷新 概览为您的应用添加滑动刷新响应刷新手势消息框概览 弹出消息概览 概览构建并显示弹出消息为消息添加操作对话框菜单 设置 概览整理您的设置自定义您的设置使用已保存的值在代码中构建层次结构处理其他设备类型首选组件和属性 搜索 概览创建搜索界面添加近期查询建议添加自定义建议可搜索配置 添加搜索功能 概览设置搜索界面存储和搜索数据其他后向兼容组件接收富媒体内容复制和粘贴拖放画中画支持 创建后向兼容界面 概览抽象化新API代理到新API使用旧版API创建实现使用版本感知组件设备控制 适用于移动应用的主屏幕频道 概览媒体主屏幕图书媒体主屏幕视频媒体主屏幕音频 应用微件 概览创建简单的widget改进widget创建高级widget使用widget集合提供灵活的widget布局启用widget配置构建应用widget宿主 动画和过渡 概览动画简介属性动画概览为可绘制图形添加动画使用动画显示或隐藏视图使用动画移动视图使用Fling动画移动视图使用缩放动画放大视图运用弹簧物理学原理为图形运动添加动画自动为布局更新添加动画使用过渡效果为布局变化添加动画创建自定义过渡动画使用动画启动Activity使用ViewPager在Fragment之间滑动使用ViewPager2在Fragment之间滑动从ViewPager迁移到ViewPager2其他资源 图片和图形 概览可绘制对象概览矢量可绘制对象概览处理位图使用PaletteAPI选择颜色减小图片下载大小硬件加速 使用AGSL着色器绘制 概览AGSL与GLSL之间的区别在Android应用中使用AGSLAGSL快速参考OpenGLES 使用OpenGLES显示图形 概览构建OpenGLES环境定义形状绘制形状应用投影和相机视图添加动画响应触摸事件 渲染 概览减少过度绘制性能和视图层次结构使用GPU渲染模式分析工具进行分析使用广色域内容增强图形效果 音频和视频 音频和视频概览媒体控件支持的媒体格式媒体编解码器 媒体应用架构 媒体应用架构概览使用媒体会话 开发音频应用 音频应用概览构建媒体浏览器服务构建媒体浏览器客户端媒体会话回调使用媒体控制器测试应用 开发视频应用 视频应用概览构建视频播放器活动媒体会话回调兼容的媒体转码响应媒体按钮处理音频输出的变化管理音频焦点 Google助理 Google助理和媒体应用Google助理驾车模式下的媒体应用 在设备之间传输 传输概览MediaRouter概览MediaRouteProvider概览使用VolumeShaper控制振幅MediaPlayer概览MediaRecorder概览ExoPlayer共享音频输入录制视频和音频播放内容帧速率分享视频的最佳做法其他媒体资源 服务 概览前台服务绑定服务AIDL概览 后台任务 概览后台线程后台优化 广播 概览隐式广播例外情况 管理设备唤醒状态 概览使设备保持唤醒状态设置闹钟使用ListenableFuture 权限 概览评估您的应用是否需要权限声明应用权限请求应用权限解释对比较敏感信息的访问权限应用权限最佳做法仅在默认处理程序中使用的权限限制与其他应用的交互定义自定义权限 应用数据和文件 概览存储空间概览保存到应用专属存储空间 保存到共享的存储空间 概览媒体文档和其他文件数据集管理存储设备上的所有文件保存键值对数据 将数据保存到本地数据库 概览使用实体定义数据使用DAO访问数据定义对象之间的关系编写异步DAO查询创建视图并将其关联到数据库预填充数据库迁移数据库测试和调试数据库引用复杂数据从SQLite迁移到Room使用SQLite保存数据存储空间用例和最佳做法 分享简单的数据 概览将简单的数据发送到其他应用从其他应用接收简单的数据 分享文件 概览设置文件分享分享文件请求某个分享的文件检索文件信息 使用NFC分享文件 概览将文件发送到其他设备从其他设备接收文件 打印文件 概览打印照片打印HTML文档打印自定义文档 内容提供程序 概览内容提供程序基础知识创建内容提供程序使用存储访问框架打开文件创建自定义文档提供程序应用安装位置 用户数据和身份 概览添加登录工作流显示生物识别身份验证对话框 自动填充框架 概览针对自动填充优化应用构建自动填充服务将自动填充功能与键盘集成识别开发者拥有的应用检查您的应用如何收集和分享用户数据审核数据访问获取用户可重置的广告ID日历提供程序概览 联系人提供程序 概览检索联系人列表检索联系人的详细信息使用Intent修改联系人显示快速联系标志帐号转移 数据备份 概览备份用户数据备份键值对测试备份和恢复唯一标识符最佳做法 记住用户并对用户进行身份验证 概览记住您的用户对OAuth2服务进行身份验证创建自定义帐号类型 用户位置 概览请求位置权限获取最近一次的已知位置更改位置信息设置请求位置信息更新在后台访问位置信息创建和监控地理围栏检测用户何时启动Activity优化位置信息服务,节省电量测试位置信息工作流迁移到LocationAPI和ContextAPI添加地图 触摸和输入 概览输入事件 使用触摸手势 概览检测常用手势跟踪触摸和指针移动以动画方式显示滚动手势支持导航手势处理多点触控手势拖动并缩放在ViewGroup中管理触摸事件 处理键盘输入 概览指定输入法类型处理输入法可见度支持键盘导航处理键盘操作 支持游戏控制器 概览处理控制器操作支持各种Android版本的控制器支持多个游戏控制器 输入法编辑器 创建输入法图片键盘拼写检查工具 相机 选择相机库 CameraX 概览架构配置 用例 预览图片拍摄图片分析视频拍摄 高级主题 ExtensionsAPI转换输出旋转设备 Camera2 概览相机捕获会话和请求相机镜头和功能同时使用多个相机信息流相机预览多相机APIExtensionsAPI 相机(已弃用) 概览拍照录制视频控制相机CameraAPI 传感器 概览传感器概览移动传感器位置传感器环境传感器原始GNSS测量值 连接性 概览 执行网络操作 概览连接到网络管理网络使用情况读取网络状态优化网络访问优化网络流量消耗监控网络连接状态和网络连接计量解析XML数据 使用Cronet执行网络操作 概览发送简单请求Cronet请求生命周期将Cronet和其他库一起使用 参考文档 org.chromium.net 概览CallbackException CronetEngine 概览 CronetEngine.Builder 概览LibraryLoaderCronetExceptionInlineExecutionProhibitedExceptionNetworkExceptionQuicExceptionUploadDataProviderUploadDataProvidersUploadDataSink UrlRequest 概览Builder回调状态StatusListener UrlResponseInfo 概览HeaderBlock使用5G增强应用使用gRPC构建客户端-服务器应用 在不消耗大量电池电量的情况下传输数据 概览优化下载以实现高效网络访问尽量减少定期更新的影响避免未经优化的下载 减少网络耗电量 概览收集网络流量数据分析数据流量优化网络访问优化用户发起的网络使用行为优化应用发起的网络使用优化服务器发起的网络使用优化常规网络使用 使用同步适配器传输数据 概览创建存根身份验证程序创建存根内容提供程序创建同步适配器运行同步适配器 蓝牙 概览设置蓝牙查找蓝牙设备连接蓝牙设备传输蓝牙数据蓝牙权限蓝牙配置文件配套设备配对 蓝牙低功耗 概览查找BLE设备连接到GATT服务器传输BLE数据 NFC 概览NFC基础知识高级NFC基于主机的卡模拟概览 电信 概览构建通话应用防止来电显示仿冒电话ID WLAN WLAN扫描功能概览Wi-Fi点对点连接Wi-Fi感知概览通过RTT确定Wi-Fi位置信息仅限本地使用的热点 WLAN基础架构 WLAN基础架构概览适用于互联网连接的WLAN建议API适用于点对点连接的Wi-Fi网络请求APIPasspoint保存网络和Passpoint配置 USB 概览配件概览主机概览UWBVPN会话发起协议概览 发现并连接 概览使用网络服务发现通过WLAN建立点对点连接将WLAN点对点用于服务发现WLANEasyConnectOpenMobileAPI读取器支持 Renderscript 概览高级RenderScript从RenderScript迁移 RuntimeAPI参考文档 概览数字类型对象类型转换函数数学常量和函数矢量数学函数矩阵函数四元数函数原子更新函数时间函数和类型分配数据访问函数对象特性函数内核调用函数和类型输入/输出函数调试函数图形函数和类型索引 基于网络的内容 概览在WebView中构建网络应用管理WebView对象加载本地内容调暗网络内容WebView崩溃报告中的用户隐私在Web应用中支持不同的屏幕调试网络应用Web应用最佳做法针对未来版本的WebView进行测试 AndroidAppBundle 概览配置基本模块构建和测试appbundle添加代码公开透明appbundle格式常见问题解答 GooglePlay GooglePlay结算服务GooglePlayCore库 PlayPoints 概览创建商品和促销活动检测和分发商品测试商品 PlayAssetDelivery 概览集成AssetDelivery(Kotlin和Java)集成AssetDelivery(原生)集成AssetDelivery(Unity)目标纹理压缩格式测试AssetDelivery PlayFeatureDelivery 概览配置安装时分发配置按条件分发配置按需分发按需分发最佳做法配置免安装分发其他资源 应用内评价 概览使用Kotlin或Java进行集成使用原生代码进行集成使用Unity进行集成测试应用内评价 应用内更新 概览支持应用内更新(Kotlin或Java)支持应用内更新(原生代码)支持应用内更新(Unity)测试应用内更新 GooglePlay免安装体验 GooglePlay免安装体验概览 免安装应用开发入门 创建免安装的appbundle应用的用户体验最佳做法 免安装游戏开发入门 概览Unity插件游戏的用户体验最佳做法迁移至AndroidAppBundle实现资源的云端分发支持GooglePlay游戏服务免安装Play游戏免安装Play游戏核对清单缩减免安装应用或游戏的大小将广告添加到您的免安装应用或游戏中提供多个入口点 与Firebase集成 为您的免安装应用添加GoogleAnalyticsforFirebase将FirebaseDynamicLinks用于免安装应用技术要求核对清单GooglePlay免安装体验政策 资源 参考文档代码示例SDK版本说明免安装应用Intent 支持 已知问题StackOverflowPlayDeveloperAPI PlayInstallReferrer 概览 PlayInstallReferrer库 概览参考文档版本说明PlayInstallReferrerAPIPlayIntegrityAPI Play要求 Play政策目标API级别支持64位架构 应用许可 概览许可概览设置许可添加服务器端验证添加客户端验证许可参考文档APK扩展文件 Google助理 概览 构建 与应用有关的Action概览实现内置intent创建shortcuts.xml将动态快捷方式推送给Google助理版本说明 测试 Google助理插件 发展 概览应用内快捷方式宣传SDK 添加更多功能 自定义intentAndroidwidget前台应用调用内嵌目录网站目录Google助理分享ReadIt Actions.xml Actions.xml迁移指南Actions.xml概览构建与应用有关的Action创建actions.xml网站目录与应用有关的Action测试工具AndroidSlice问题排查支持 Slice 概览使用入门Slice模板 设备上搜索 游戏 开发 概览 AndroidGameDevelopmentKit(AGDK) 概览库下载版本说明AndroidStudio 适用于VisualStudio的AndroidGameDevelopmentExtension 概览快速入门配置项目调试程序衡量应用性能针对AndroidStudio修改build.gradle文件示例版本说明 AndroidGPU检查器 概览快速入门支持的设备 系统性能分析 概览查看系统配置文件GPU性能计数器 分析系统配置文件 帧处理时间内存效率纹理内存带宽用量顶点内存带宽用量线程调度 帧性能分析 概览 分析帧配置文件 开销最大的渲染通道顶点格式着色器性能 帧性能分析器界面 “Performance”窗格“Commands”窗格“Framebuffer”窗格“Geometry”窗格“Report”窗格“Shader”窗格“Memory”窗格“State”窗格“Textures”窗格“Texture”窗格“Pipeline”视图窗格支持的Vulkan扩展问题排查AndroidPerformanceTuner MemoryAdviceAPI 概览使用入门 改进 提高游戏性能缩减游戏大小 提高设备可用性 支持64位架构支持所有屏幕 游戏模式 概览使用GameModeAPI进行优化游戏模式干预项 Vulkan和OpenGL 3D素材资源优化Vulkan预旋转顶点数据管理 分发 概览 GooglePlay游戏电脑版 概览使用入门 设置游戏 PC兼容性图形配置 设备输入 设置输入 输入SDK 概览快速入门 连续性 概览连续性要求验证要求现有身份解决方案使用模拟器在Chrome操作系统上测试 发布和部署 软件包提交更新常见问题解答GooglePlay免安装体验边下载边玩 健康与健身应用 HealthConnect 简介 平台概览 架构开发者功能使用入门 数据和数据类型 简介数据类型DifferentialChangesAPI 常规工作流 写入数据读取数据删除数据汇总数据使用时段异常常见问题解答 HealthConnect指南 HealthConnect政策要求常见问题解答用户体验开发者指南 迁移 HealthConnectAPI比较指南将AndroidAPI匹配到HealthConnect迁移指南 最佳做法 测试 在Android平台上测试应用 基础知识 Android应用测试基础知识要在Android中测试的内容在Android中使用测试替身 本地测试 构建本地测试 插桩测试 构建插桩测试自动化界面测试 AndroidX测试库 针对AndroidXTest设置项目AndroidXTest的JUnit4规则AndroidJUnitRunner Espresso EspressoEspresso基础知识Espresso设置说明Espresso备忘单Espresso空闲资源Espresso-IntentsEspresso列表MultiprocessEspressoEspresso测试方案EspressoWeb无障碍功能检查其他Espresso资源 测试其他组件 测试contentprovider测试您的服务使用UIAutomator编写自动化测试 性能 概览 检查性能 AndroidStudio性能分析器 性能分析和跟踪 系统跟踪 概览 捕获跟踪记录 在AndroidStudio中捕获跟踪记录捕获设备上的跟踪记录通过命令行捕获跟踪记录浏览报告 自定义事件 定义自定义事件原生代码中的自定义跟踪事件检查GPU渲染 基准化分析 概览 Macrobenchmark 编写基准捕获指标控制您的应用添加插桩参数 Microbenchmark 概览编写基准对基准进行性能分析添加插桩参数不使用Gradle进行构建在持续集成环境中运行基准化分析 提高性能 基准配置文件应用启动库 指南 在后台运行性能等级应用待机存储分区应用休眠在Android运行时(ART)上验证应用行为 解决常见问题 应用启动 呈现速度缓慢 让您的应用随时能迅速响应改善布局性能渲染 内存 内存管理概览属性间的内存分配管理应用内存进程和线程 电池和电量 针对低电耗模式和应用待机模式进行优化监控电池电量和充电状态监控网络连接状态和网络连接计量确定和监控插接状态和基座类型使用Batterystats和BatteryHistorian分析电池用量使用BatteryHistorian分析耗电情况测试电量相关问题后台优化缩减应用大小 监控性能 AndroidVitals 概览部分唤醒锁定操作卡住过多唤醒后台WLAN扫描次数过多后台网络使用量过高ANR崩溃呈现速度缓慢冻结的帧权限遭拒应用启动时间JankStats库 无障碍 概览 构建和测试应用的无障碍功能 让应用使用起来更没有障碍改进应用无障碍功能要遵循的原则测试应用的无障碍功能 高级主题 让自定义视图使用起来更没有障碍创建自己的无障碍服务其他资源 隐私设置 隐私设置最佳做法 安全性 应用安全最佳做法安全提示数据安全在其他各Android版本中确保数据安全通过HTTPS和SSL确保安全网络安全配置更新您的安全提供程序以防范SSL攻击 使用SafetyNet抵御安全威胁 概览SafetyNetAttestationAPISafetyNetSafeBrowsingAPISafetyNetreCAPTCHAAPISafetyNetVerifyAppsAPI加密Android密钥库系统使用密钥认证功能来验证由硬件支持的密钥对AndroidProtectedConfirmation支持直接启动运行嵌入式DEX代码应用安全性改进计划 SDK SDK最佳实践 为数十亿用户打造产品 概览网络连接设备功能数据费用耗电量界面和内容 为企业打造产品 概览开发者指南工作资料设置托管配置 应用反馈 向EMM发送应用反馈测试应用反馈工作联系信息设备管理政策 设备管理 概览构建设备政策控制器 专用设备 概览锁定任务模式多用户实战宝典设备控制网络和电话安全性系统更新网络活动日志 Android版本 概览Android12Android11Android10Android9Android8.0Android7.0设备管理 Android开发者 文档 指南 通知概览 使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

通知是指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 中文–简体 中文–繁體 日本語 한국어



請為這篇文章評分?