У меня есть уведомление с некоторыми действиями. И я использую Notification.Builder , чтобы установить цвет для действия и тонирования значка. Вот полный код для создания уведомления.
val notification = Notification.Builder(context,
CHANNEL_ID)
.setContentTitle(title)
.setContentText(mainText)
.setSmallIcon(R.drawable.small_icon)
.setContentIntent(pendingIntent)
.addAction(Notification.Action.Builder(
Icon.createWithResource(
this, R.drawable.action_icon),
getString(R.string.action_title),
actionPendingIntent)
.build())
.setStyle(Notification.InboxStyle()
.addLine(mainText)
.addLine(subText)
.addLine(secondSubText)
.setBigContentTitle(title)
.setSummaryText(summaryText))
.setColor(getColor(R.color.notification_accent))
.build()
Цвет R.color.notification_accent
объявлен как в values
, так и в values-night
и имеет разные цвета. Также базовая тема приложения распространяется от Theme.MaterialComponents.DayNight
. И все приложение корректно меняется между темами, когда темная тема включена / отключена в устройстве.
Когда я создаю уведомление, оно всегда создается правильно, поэтому, когда темная тема включена, цвет от values-night
используется, и когда он выключен, используется цвет values
.
Проблема в том, что тема меняется и уведомление уже видно. Я вижу, что уведомление на самом деле меняется, поскольку фон меняется с темного на светлый, но цвет действия не меняется.
Полагаю, это происходит потому, что цвет не является частью темы уведомления,но я не уверен, как это можно обработать, или если это ошибка в Notification.Builder .
Редактировать: это происходит на эмуляторе, работающем с API 29. При запускеприложение на устройстве поведение правильное, цвета меняются. Я сам отвечаю на вопрос, говоря об использовании устройства.