问题描述
在Android O中,当我尝试发送通知时,必须指定要发送的NotificationChannel
。如果我使用旧方法(不设置任何通道),像这样NotificationCompat.Builder(this)
,则无法显示Notification
。同样适用于无效通道,如NotificationCompat.Builder(this, "invalid")
或NotificationCompat.Builder(this, "")
。
当我通过Firebase Cloud Messaging发送通知,并且我的应用程序处于后台状态而没有指定notification channel时,它将成为"Miscellaneous"通道中的通知。
当我尝试在前台执行相同操作时,上述内容将不起作用,创建名称为"Miscellaneous"和id为"{package}.MISCELLANEOUS"的通知渠道,然后通过它发送也不行。这时会发生以下情况:
我想知道的
如何像FCM那样发送通知,而不需要频道,以便它可以落在常规的"杂项"频道中?
这种方法的示例
如上所述,FCM通知就是一个例子,但是例如Gmail也使用杂项频道。那么我该如何使用呢?
我认为,如果杂项频道平时无法使用,他们会将其删除。
简短描述
为什么这段代码没有向“杂项”通知渠道发送通知,实际上它没有发送任何通知(只有在Android O上,该代码才能在较低版本的Android上工作)。
(getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager).notify(1, NotificationCompat.Builder(this, NotificationChannel.DEFAULT_CHANNEL_ID)
.setSmallIcon(R.drawable.small_icon)
.setContentTitle(URLDecoder.decode("Title", "UTF-8"))
.setContentText(URLDecoder.decode("Text", "UTF-8"))
.setColor(ContextCompat.getColor(applicationContext, R.color.color))
.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
.setContentIntent(PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT))
.build())