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<Intent> = 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 通知栏适配》
大神之作,受益匪浅!