今天写了下demo 发现通知在8.0后有些改变记录下这个坑!!!!
通知的代码大家在网上一搜一大把,我也不废话 直接上重点。
点击发送通知,没有通知显示,代码如下。
日志信息
明明走了这行代码却什么也没发生,what? 难道写错了?,后来查看了资料下才知道是8.0后加了个叫通知渠道的东西,简单点说 就相当于一个ID,标记当前是什么通知,用于给系统识别的,
,且上面方法已经废弃掉了,必须带有通知渠道的 通知才能展示!
稍稍调整下代码
给一个CHANNEL_ID 的标识,重点是这个NotificationChannel 这个类,再创建通知前一定要createNotificationChannel()
这个方法只会走一次,而且不影响效率,也不会重复创建
NotificationChannel
运行后效果,通知就出来了
什么是通知渠道
官方解释在上面
Android 8.0 系统,Google引入通知渠道,提高用户体验,方便用户管理通知信息,同时也提高了通知到达率
什么是通知渠道呢?顾名思义,就是每条通知都要属于一个对应的渠道。每个App都可以自由地创建当前App拥有哪些通知渠道,但是这些通知渠道的控制权都是掌握在用户手上的。用户可以自由地选择这些通知渠道的重要程度,是否响铃、是否振动、或者是否要关闭这个渠道的通知。
通知适配
build.gradle 中targetSdkVersion设置大于等于26。这时如果不对通知渠道适配,通知就无法显示。
代码在上面有,主要是这个
自定义通知和点击事件
点击自定义通知效果及日志
点击后跳转我想要的页面
日志
只要是用
RemoteViews的setOnClickPendingIntent 给某个控件设置点击事件, 网上大多是通过
PendingIntent 设置广播,如果我只需要做单纯的跳转某个界面没必要这么麻烦。。。