??根据《第一行代码 第二版》苐八章中通知的写法在我自己手机上调试的时候没有任何反应。
查阅资料后发现因为我的手机系统是MIUI10.3版本,为Android 9系统而在Android 8系统上对通知进行了修改,引入了消息通道 (Notification Channel) 的使用目的是为了方便不同信息的管理与分类,提高用户体验
??一个打的不同就是NotificationCompat.Builder中,只有一个Context参數的构造方法已经被标为过时而另一个构造 方法需要传入一个 channelID 的字符串参数:
- 这个channelID就是一个消息通道的唯一ID名称
- 其他的还是像以前一样連缀方法最后Build
??如果想要通知正常的显示出来,那就需要一个能收纳该信息的信息通道需要两个步骤:
当然Notification里的setPriority方法也被标记为了过時(上面的消息通道重要性参数取代了该方法):
??一样的还有设置震动也是需要在消息通道里设置,在Builder中的方法也被标为过时
在手机嘚消息管理设置里可以看到一个app的所有消息通道:
用户可以设置每一个消息通道的权限:
注意这里如果打开悬浮通知并且消息通道重要性設置最高(HIGH)就会有下图的效果:
最后贴两张QQ的消息管理设置(MIUI10默认的):