Android O(8.0)以上系统使用通知

2023-11-08

前言

  根据《第一行代码 第二版》第八章中通知的写法,在我自己手机上调试的时候没有任何反应。
查阅资料后发现,因为我的手机系统是MIUI10.3版本,为Android 9系统,而在Android 8系统上对通知进行了修改,引入了消息通道 (Notification Channel) 的使用。目的是为了方便不同信息的管理与分类,提高用户体验。

创建通知

  一个打的不同就是NotificationCompat.Builder中,只有一个Context参数的构造方法已经被标为过时,而另一个构造 方法需要传入一个 channelID 的字符串参数:
Builder构造方法

  • 这个channelID就是一个消息通道的唯一ID名称
  • 其他的还是像以前一样连缀方法最后Build

建立消息通道

  如果想要通知正常的显示出来,那就需要一个能收纳该信息的信息通道,需要两个步骤:

  • 创建消息通道
  • 提交给通知管理器

创建消息通道:

//id 就是上面创建消息需要的消息通道的ID
//name 是该消息通道的名称
//最后一个参数是该消息通道的重要性
NotificationChannel channel=new NotificationChannel("id","name",NotificationManager.IMPORTANCE_HIGH);
channel.enableLights(true);//允许呼吸灯闪烁
channel.setDescription("describe");//设置该通道的描述
channel.setLightColor(Color.RED);
//当然还可以再使用其他方法

  最后一个参数目前只能在NotificationManager类取IMPORTANCE_NONE-IMPORTANCE_HIGH,对应0-4几个取值(MAX不能用),最高的HIGH会像QQ微信一样出横幅,前提是用户设置了允许。

当然Notification里的setPriority方法也被标记为了过时(上面的消息通道重要性参数取代了该方法):
优先级过时
  一样的还有设置震动也是需要在消息通道里设置,在Builder中的方法也被标为过时

提交给通知服务:
  这步很简单:

NotificationManager manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);//获取消息服务
manager.createNotificationChannel(channel);//创建消息通道

使用通知

Notification notification=new Notification.Builder(this,"id")
        .setContentTitle("Title")
        .setContentText("This is Content")
        .setWhen(System.currentTimeMillis())
        .setSmallIcon(R.mipmap.ic_launcher)
        .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher_round))
        .build();
manager.notify(55520,notification);

效果

打开程序:
界面
状态栏:
状态栏
在手机的消息管理设置里可以看到一个app的所有消息通道:
app消息通道
用户可以设置每一个消息通道的权限:
消息通道权限
注意这里如果打开悬浮通知并且消息通道重要性设置最高(HIGH)就会有下图的效果:

在悬浮通知
最后贴两张QQ的消息管理设置(MIUI10默认的):
QQ消息通道
权限

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android O(8.0)以上系统使用通知 的相关文章

随机推荐

  • 运输层---UDP协议

    目录 一 无连接运输 UDP 1 1 定义 1 2 特点 1 3 应用 二 UDP报文段结构 三 UDP检验和 3 1 定义 3 2 检验和计算实例 3 3 UDP检验和的局限 一 无连接运输 UDP 1 1 定义 UDP User Dat
  • 高光谱图像选择波段的研究

    免责声明 本文仅代表个人观点 如有错误 请读者自己鉴别 如果本文不小心含有别人的原创内容 请联系我删除 本人心血制作 若转载请注明出处 本文是根据 魏芳洁 所著的 高光谱图像波段选择方法的研究 一文而写 基本细节皆引自此文 高光谱主要问题是
  • svn 错误 以及 中文翻译

    比较长 如何查找不方便的话 用查找 CTRL F 吧 Simplified Chinese translation for subversion package This file is distributed under the same
  • GraphPad Prism 9 for Mac 的使用教程

    一 图形类型怎么选择 1 XY 折线图 散点图 适用于线性回归 非线性回归 相关性分析 2 Column 柱状图 适用于单因素的统计分析 如单个样本的t检验 3 Grouped 适用于两个因素或者多因素的方差分析 4 Contingency
  • 多线程案例

    目录 一 单例模式 二 阻塞式队列 三 定时器 四 线程池 一 单例模式 单例模式其实是一种设计模式 而设计模式简单来说其实就是针对一些常见场景给出的一些经典解决方案 让程序员可以更好的解决问题 我们到目前为止一般涉及到的设计模式有两种 单
  • MySQL 数据类型

    MySQL支持多种类型 大致可以分为三类 数值 日期 时间和字符串 字符 类型 数值类型 MySQL支持所有标准SQL数值数据类型 这些类型包括严格数值数据类型 INTEGER SMALLINT DECIMAL和NUMERIC 以及近似数值
  • RedisJSON介绍

    RedisJSON 是一种高性能 JSON 文档存储 允许开发人员构建现代应用程序 它在内存中存储和处理 JSON 以亚毫秒级支持每秒数百万次操作响应时间 JSON 文档的原生索引 查询和全文搜索允许开发人员创建二级索引 快速查询数据 企业
  • 微电网日前优化调度 。算例有代码(1)

    个人电气博文传送门 学好电气全靠它 个人电气博文目录 持续更新中 符号说明 问题1 求解 经济性评估方案 若微网中蓄电池不作用 且微网与电网交换功率无约束 在无可再生能源和 可再生能源全额利用两种情况下 分别计算各时段负荷的供电构成 kW
  • 跑马灯-------寄存器版本

    拿到一个工程模板 首先要编译 编译成功之后再删除main 内容 这样编译不会出错 程序步骤 配置时钟使能寄存器 RCC AHB1ENR寄存器 用来时钟使能 然后 跑马灯IO口是PF9 PF10 GPIOF在RCC AHB1ENR 中是第五位
  • Eclipse 插件开发中使用Target Platform

    使用Eclipse IDE做插件 Plugin 开发的时候 有时会遇到开发的平台跟当前Eclipse版本不一致的问题 解决办法之一就是在当前项目中定义自己的target platform 文件 创建Target Platform文件 1 创
  • 服务降级、熔断、限流

    目录 目录 1 概念 1 1 降级 1 1 1 常见降级 1 1 2 示例 1 2 熔断 1 2 1 熔断设计 1 2 2 示例 1 3 限流 1 3 1 算法 1 3 2 示例 2 区别 3 案例 1 概念 1 1 降级 服务降级处理是在
  • java 判断两个字符串的字符集是否相同

    问题描述 给定两个字符串判断它们的字符集是否相同 例如 aaabbcc 和 abc 的字符集是相同的 字符集都是 a b c 解题方法 这题与变形词不同在于仅仅要求字符集相同 对数量和长度没有要求 而变形词是要求重复出现的次数也要相同 可以
  • 基于selenium的twitter博文评论爬虫

    技术合作联系 13958075150 1 首次登录获取cookies并存为文件 from selenium import webdriver import time import json br webdriver Chrome br ge
  • 【nacos】5.2 @RefreshScope + @Value 注解 自动刷新配置

    返回首页 gt 笔记 Spring Cloud Alibaba Nacos 接上节 spring cloud Nacos 实现统一配置管理 1 问题 如何不启动spring boot项目自动更新 Value 注解的值 2 方案 类 方法 属
  • 螺旋矩阵的python实现

    问题描述 对于一个 n 行 m 列的表格 我们可以使用螺旋的方式给表格依次填上正整数 我们称填好的表格为一个螺旋矩阵 例如 一个 4 行 5 列的螺旋矩阵如下 1 2 3 4 5 14 15 16 17 6 13 20 19 18 7 12
  • eclipse indigo版本连接oracle XE(图解)

    讲在题前 oracle 的各个版本对应的驱动名称 oracle 不同版本的驱动 是对应不对的JDK版本的 例如JDK是1 4的话 你需要的oracle的JDBC的驱动包名称为 ojdbc14 jar 例如JDK是1 4的话 你需要的orac
  • C语言——字符串翻转

    C语言系列文章 C语言 判断回文数 对称数 字符串翻转 C语言系列文章 前言 字符串翻转 复习时间 C语言代码 总结 前言 哈喽 小伙伴们 最近在复习C语言的基础语法 从0开始 所以今天的题目比较简单 也就是我们最常见的字符串翻转问题 这道
  • go语言详解-----包(package)引入

    一 go语言基础 1 每一个可运行的go程序必须要有一个main 包 package 即package main 并且该main包中必须要有一个main函数 这是一个入口函数 2 一个包中的描述符要能够被其他的包引用 那么该包中的相关描述符
  • Matlab 散点图(Scatter)和颜色图(Colormap)

    目录 一 什么是散点图 二 什么数据需要用散点图来呈现 三 matlab 中的颜色如何表示和调用 ColorOrder LineStyleOrder 应用实例 四 颜色和透明度在散点图中的灵活应用 二维散点图 三维散点图 数据分组 五 Sc
  • Android O(8.0)以上系统使用通知

    前言 根据 第一行代码 第二版 第八章中通知的写法 在我自己手机上调试的时候没有任何反应 查阅资料后发现 因为我的手机系统是MIUI10 3版本 为Android 9系统 而在Android 8系统上对通知进行了修改 引入了消息通道 Not