Android:通知 基本使用 在 Andfroid 8.0 之前用户对通知的处理是没办法对通知消息进行区分要么接收所有信息要么屏蔽所有新信息不能只接受用户想要的信息不能细粒度区分。Android 8.0 之后引入了通知渠道解决了该痛点每条通知属于一个通知渠道即对通知做了细粒度的区分例如可分为新闻通知、私信通知。开发人员可以创建通知渠道用户能够实际管理通知渠道 决定是否 开启这个通知渠道的通知以及设定通知级别决定通知方式下拉弹窗静默通知等使用方式获取 NotificationManager 实例通过Context 的getSystemService(Context.NOTICIFICATION_SERVICE) 获取声明 通知渠道创建 Notification 对象可以使用多样的设置方法一多样化通知使用 NotificationManager notify()发送通知// 1. 获取系统通知管理服务// Context.NOTIFICATION_SERVICE 是系统服务的标识返回 NotificationManager 对象// as NotificationManager 进行类型转换valmanagergetSystemService(Context.NOTIFICATION_SERVICE)asNotificationManager// 2. 通知渠道仅在 Android 8.0 (API 26) 及以上版本需要创建低版本会自动忽略if(Build.VERSION.SDK_INTBuild.VERSION_CODES.O){// 创建通知渠道对象// 参数1 channelId: 渠道的唯一标识符后续发送通知时需要匹配此 ID如 news// 参数2 channelName: 渠道名称显示在系统设置中用户可见// 参数3 importance: 通知的重要程度决定通知的行为如是否弹出横幅、是否有提示音等valchannelNotificationChannel(news,新闻,IMPORTANCE_HIGH)// 将渠道对象注册到系统。一旦创建渠道的重要程度等属性将无法修改除非卸载应用重装manager.createNotificationChannel(channel)}// 创建点击通知时触发的 Intent此处指定跳转到 MainActivity// flags FLAG_ACTIVITY_NEW_TASK: 如果目标 Activity 不在当前任务栈则创建新任务启动valintentIntent(this,MainActivity::class.java).apply{flagsFLAG_ACTIVITY_NEW_TASK}// 将 Intent 包装为 PendingIntent用于在通知被点击时以应用原有权限执行跳转// 参数1 context: 上下文// 参数2 requestCode: 请求码用于区分不同 PendingIntent通常设为 0// 参数3 intent: 要执行的动作// 参数4 flags: 控制 PendingIntent 的行为// FLAG_IMMUTABLE: 表示创建的 PendingIntent 不可变Android 6.0 推荐// 如需可变如添加额外数据可用 FLAG_UPDATE_CURRENTvalpendingIntentPendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_IMMUTABLE)// 3. 使用 NotificationCompat.Builder 构建通知兼容低版本// 参数1 context: 上下文// 参数2 channelId: 必须与上面创建的渠道 ID 一致newsAndroid 8.0 会路由到对应渠道valnotificationNotificationCompat.Builder(this,news).setSmallIcon(R.drawable.ic_notify)// 必需设置通知的小图标状态栏显示.setContentTitle(标题)// 通知的标题.setContentText(内容)// 通知的内容文本.setContentIntent(pendingIntent)// 设置点击通知时执行的 PendingIntent.setAutoCancel(true)// 用户点击通知后自动从通知栏移除.build()// 最终构建出 Notification 对象// 4. 发送通知// 参数1 id: 通知的唯一标识正整数。相同 id 会覆盖之前的通知不同 id 会叠加显示// 参数2 notification: 要发送的通知对象manager.notify(1,notification)

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/9/23 4:54:42
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/24 14:25:52
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/9/24 14:49:33
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/9/23 8:01:38
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 14:28:18
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/24 11:09:24

日新闻

周新闻