Android 8.0 通知栏适配 & NotificationChannel

Android O 适配通知栏,发送通知不生效,报错如下:

E/NotificationService: No Channel found for pkg=***, channelId=my_channel_01, id=0, tag=null, opPkg=***, callingUid=10219, userId=0, incomingUserId=0, notificationUid=10219, notification=Notification(channel=my_channel_01 pri=0 contentView=null vibrate=null sound=null tick defaults=0x0 flags=0x10 color=0x00000000 vis=PRIVATE)

重要特性:NotificationChannel

// 最终代码:
val notificationManager = (context as Context).getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager?
val notificationId = 0x1234
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                var mChannel = NotificationChannel("1", "my_channel_01" as CharSequence, NotificationManager.IMPORTANCE_DEFAULT)
                mChannel.enableLights(true)
                mChannel.setLightColor(Color.RED);
                mChannel.enableVibration(true);
                notificationManager!!.createNotificationChannel(mChannel)
                var builder = Notification.Builder(context, "1")
                builder.setSmallIcon(android.R.drawable.stat_notify_chat)
                        .setContentTitle("开心不开心")
                        .setContentText("开心")
                        .setNumber(3); //久按桌面图标时允许的此条通知的数量
                notificationManager!!.notify(notificationId, builder.build());
            } else {
                TODO("VERSION.SDK_INT < O")
            }

其他

// 点击后自动消失
.setAutoCancel(true)

Kotlin 也是有数组的,不要被误导了

 var intents:Array = arrayOf(Intent(context, MainActivity::class.java),Intent(context, NoticeActivity::class.java))
// 设置多个intent,开启多个Activity,此处不能用集合,只能用数组
.setContentIntent(PendingIntent.getActivities(context, 1, intents, PendingIntent.FLAG_CANCEL_CURRENT))

参考链接

https://blog.csdn.net/rentee/article/details/78303532

强烈推荐

我是在解决之后,无意看到郭神的 《Android 8.0 通知栏适配》
大神之作,受益匪浅!

你可能感兴趣的:(Android 8.0 通知栏适配 & NotificationChannel)