android8 通知呼吸灯_Android8.0及以上的Notification

这篇文章上次修改于 702 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

在新版本上(Android8.0及以上)开发时,会遇到一些问题,比如,不显示通知,Notification 声音不可控,删除 channel 删到崩溃。

闲下来测试一番,总结 Notification 如下:

首先,Android8.0 及以上版本使用 Notification 需要为其设置 NotificationChannel ,理解为频道,为 Notification 归类,统一管理,设置声音,震动等都需要通过 NotificationChannel 进行设置NotificationChannel channel = new ...

channel.setSound(null,null);//静音

channel.enableVibration(true);//震动

channel.setVibrationPattern(new long[]{100,200,300});//震动模式

channel.enableLights(true);//呼吸灯

channel.setLightColor(Color.rgb(0,0,0));//呼吸灯颜色

NotificationChannel 构造函数参数解释id :唯一标示

name :显示在应用详情中的名称,不唯一,可重复,即使在同一组中也可重复(下面会提到组的概念)。

importance :级别,重要性 NotificationManager 共提供了7个级别的常量NotificationManager.IMPORTANCE_UNSPECIFIED

NotificationManager.IMPORTANCE_NONE

NotificationManager.IMPORTANCE_MIN

NotificationManager.IMPORTANCE_LOW

NotificationManager.IMPORTANCE_DEFAULT

NotificationManager.IMPORTANCE_HIGH

NotificationManager.IMPORTANCE_MAX

NotificationChannel 构造函数里 id 是唯一的,使用相同 id ,不同 name new出的新对象代表的是同一个 channel ,name 会被最后一个 NotificationManager.createNotificationChannel(channel) 中的 channel name 覆盖。

还有一个为 NotificationChannel 归类的组的概念,NotificationChannelGroup , 他的构造函数只有 id 和 name ,同样的,和上面 NotificationChannel 的含义一样,略。

将 NotificationChannel 添加到 NotificationChannelGroup 的方式,不是 group.add 或 group.set ,而是NotificationChannel channel = new ...

channel.setGroup("group1");//传参 NotificationChannelGroup的id

由于是上面这种方式关联二者,所以 NotificationChannelGroup 必须先创建NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

NotificationChannelGroup group = new NotificationChannelGroup("group1","This is Group 1");

manager.createNotificationChannelGroup(group);

再通过 channel.setGroup("group1") 做关联,否则会报异常Caused by: java.lang.IllegalArgumentException: NotificationChannelGroup doesn't exist

并且 channel.setGroup("group1") 必须在 NotificationManager.createNotificationChannel(channel) 之前设置,否则无效,所以,他们的顺序是manager.createNotificationChannelGroup(group);

channel.setGroup("group1");

manager.createNotificationChannel(channel);

当 NotificationChannelGroup 在没有添加任何 NotificationChannel 时,在应用详情中不会显示该组

NotificationChannelGroup 好像记仇,channel 只要加进去的,就永远删不掉,尝试使用channel.setGroup(null);//置空

channel.setGroup("group2");//设置到其他组

都不管用,通过manager.deleteNotificationChannel("channel1");//传参 channel的id

也只是能隐藏 channel,如果还用相同的 id 创建 channel ,新 channel 还在第一次加入的那个组中,只有卸载应用才能删除 channel ,在开发时,一定要注意这一点,在调试时,可以采用不同的 id 以避免出现诡异的现象。

我理解这是一个注册的机制,应用安装后,只要 NotificationManager.createNotificationXXX 代码运行一次就注册了,即使应用以后的版本注释了该段代码,他依然有效,想要"删除",需要主动调用 NotificationManager.deleteNotificationXXX ,想要彻底删除只能卸载应用~

还要提一点, NotificationCompat.Builder 的构造函数中 channelId 必须是注册过的 channelId,否则在 NotificationManager.notify 时,不会出现通知,也不会报像 channel doesn't exist 的异常。

2019/1/18.

Dean.King

Beijing

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

harmonyos公测招募,nova为主 HarmonyOS 2.0开发者Beta公测再招募

原标题:nova为主 HarmonyOS 2.0开发者Beta公测再招募HarmonyOS 2.0开发者Beta公测招募将开启第二期,本次公测活动主要针对的机型是华为nova系列。活动报名时间为5月9日-5月17日。【PChome手机频道资讯报道】华为方面在4月份开启了HarmonyOS 2.0开发者Bet…

队列总结

什么是队列 队列(Queue):具有一定操作约束的线性表 插入和删除操作:只能在一端插入,而在另一端删除 数据插入:入队列(AddQ) 数据删除:出队列(DeleteQ) 先来先服务 先…

python连接mongodb进行查询_Python中的MongoDB基本操作:连接、查询实例

这篇文章主要介绍了Python中的MongoDB基本操作:连接、查询实例,本文直接给出操作示例代码,需要的朋友可以参考下MongoDB是一个基于分布式文件存储的数据库。由C语言编写。旨在为WEB应用提供可护展的高性能数据存储解决方案。它的特点是高性能、易部署、易使用&#…

D P- 免费馅饼

题目 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以ga…

android+录像中截图软件下载,录屏截图大师app

录屏截图大师app是一款专业录屏软件,不少用户可能会有使用手机录屏的需求,尤其是在手机内置没有录屏功能的时候,这款软件就非常值得大家考虑,支持自定义设置录屏的大小和画质,还没有水印,还支持后期的简单编…

python随机函数笔记_Python笔记__random

random模块提供了随机数相关的一些函数,所有函数都绑定在一个random.Random类的实例上,所以,你可以直接用模块级的函数random.xxx(),也可以random.Random().xxx()。random.random(): 随机生成一个[0.0, 1.0)范围内的浮点数。是下面…

一加桌面3.0 android8,一加手机XRemix6.0安卓8.1.0Beta2.0定制本地化增强适配归属农历等...

制作者:moonlight-roms基于版本:remix最新安卓8.1.0代码适合机型:一加手机X双网版/全网通版/E1001/E1003等/onyx注意事项:1.开机后语言设置:Settings-system-languageandinput-添加一个中文需要并拖动到第一行设置为默…

震惊!Fibonacci Again

题目 There are another kind of Fibonacci numbers: F(0) 7, F(1) 11, F(n) F(n-1) F(n-2) (n>2). Input Input consists of a sequence of lines, each containing an integer n. (n < 1,000,000). Output Print the word “yes” if 3 divide evenly into …

jumpserver 使用教程_Jumpserver之快速入门

一&#xff0c;系统设置1.1基本设置修改 url 的"localhost"为你的实际 url 地址, 否则邮件收到的地址将为"localhost" 也无法创建新用户1.2邮件设置1.3终端设置保持默认设置即可1.4安全设置根据需要设置二.用户管理2.1创建jumpserver用户#点击页面左侧&quo…

华为鸿蒙手机和电视通话,鸿蒙智慧屏首秀:逾10万人预定,电视视频通话功能强大...

原标题&#xff1a;鸿蒙智慧屏首秀&#xff1a;逾10万人预定&#xff0c;电视视频通话功能强大上周五&#xff0c;大家期待已经的华为开发者大会正式召开&#xff0c;华为鸿蒙系统在这一天对外发布。历时数年&#xff0c;经过几千人的研发&#xff0c;终于正式落地。曾经&#…

震惊! Leftmost Digit

题目 Given a positive integer N, you should output the leftmost digit of N^N. Input The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow. Each test case contain…

ladp3 获取属性_Ldap3库使用方法(四)

#!/usr/bin/env python# -*- coding: utf-8 -*-import jsonfrom ldap3 import ALL_ATTRIBUTES# 注意&#xff1a;ldap3库如果要使用tls(安全连接)&#xff0c;需要ad服务先安装并配置好证书服务&#xff0c;才能通过tls连接&#xff0c;否则连接测试时会报LDAPSocketOpenError(…

两文本一图片android,Android富文本编辑器(二):图文混排以及图片上传处理

对于一个富文本编辑器来说&#xff0c;图文混排是最基本的功能。而从上一篇文章中我们知道图文混排需要使用ImageSpan。下面这段代码摘自我的RichEditText源码&#xff1a;/*** 添加图片* param filePath 图片文件路径*/public void addImage(String filePath) {SpannableStrin…

qt添加菜单纯代码_Qt Creator 插件开发(3):添加菜单项

本章我们将学习如何向 Qt Creator 的菜单栏添加内容。在上一章插件的基础之上&#xff0c;我们将尝试开发一个比较正式的插件——在菜单栏中可以看到&#xff0c;并且可以相应用户动作等。在我们开始之前&#xff0c;我们先来看看 Qt Creator 已有的菜单&#xff1a;Qt Creator…

android添加hidl,android hidl

1、定义.hal接口文件&#xff0c;如&#xff1a;在vendor/sprd/interface中新建目录hello&#xff0c;其中定义好hidl接口&#xff0c;如&#xff1a;1 package [email protected]1.0;23 interfaceIHello {45 helloWorld(string name) generates (stringresult);67 };2、利用hi…

震惊! Rightmost Digit 快速幂解决

题目 Given a positive integer N, you should output the most right digit of N^N. Input The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow. Each test case conta…

rrpp协议如何修改_RRPP协议

产生背景在网络规划和实际组网应用中&#xff0c;大多采用环网来提供高可靠性。环网技术简单来说&#xff0c;就是将一些网络设备通过环的形状连接到一起&#xff0c;实现相互通信的一种技术。为了避免环网中产生广播风暴&#xff0c;最初采用了已被普遍应用的STP协议环路保护机…

android handler同步,android解决:使用多线程和Handler同步更新UI

如果运行时&#xff0c;可以看到滚动条由条慢慢变短&#xff0c;则说明程序成功了。截图如下&#xff0c;建议选择大点的文件做测试。main.xmlxmlns:android"http://schemas.android.com/apk/res/android"android:layout_height"wrap_content" android:id&…

hashmap hash冲突怎么解决_HashMap原理及冲突之简谈

了解HashMap原理对于日后的缓存机制多少有些认识。在网络中也有很多方面的帖子&#xff0c;但是很多都是轻描淡写&#xff0c;很少有把握的比较准确的信息&#xff0c;在这里试着不妨说解一二。对于HashMap主要以键值(key-value)的方式来体现&#xff0c;笼统的说就是采用key值…

html5把六张图片做成立方体,HTML5绘制在立方体上的几何曲线图形

CSS语言&#xff1a;CSSSCSS确定body {background: #222;width: 100vw;height: 100vh;overflow: hidden;-webkit-filter: blur(1px);filter: blur(1px);box-sizing: border-box;-webkit-perspective: 3000px;perspective: 3000px;}.cube {position: absolute;width: 250px;heig…