android - Android、Java - setSmallIcon() 隐藏在新通知中。但通知仍然存在于通知抽屉中
问题描述
我真的迷路了。是否存在隐藏状态栏中的通知图标但通知仍存在于抽屉中的情况?在回复现有通知后将传入消息附加到通知时会发生这种情况。
我用 :
NotificationCompat.MessagingStyle.extractMessagingStyleFromNotification();
一切正常,但通知图标隐藏。我也用
NotificationManager.IMPORTANCE_HIGH
这是通知生成器代码。
NotificationCompat.MessagingStyle activeNotification = NotificationCompat.MessagingStyle.extractMessagingStyleFromNotification();
return new NotificationCompat.Builder(getApplicationContext(), ID)
.setContentIntent(pIntent)
.addAction(action)
.setSmallIcon( R.drawable.icon)
.setAutoCancel(true)
.setSound(uri)
.setStyle(activeNotification
.addMessage(body, SystemClock.currentThreadTimeMillis(), person)
)
;
提前致谢。
解决方案
您可以按照下面的通知生成器。我正在设置这样的小图标:
val notificationBuilder: NotificationCompat.Builder =
NotificationCompat.Builder(context, channelId)
notificationBuilder.setSmallIcon(R.mipmap.ic_launcher_round)
更新:
我正在发布我的完整代码以显示通知。
val pendingIntent =
PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
val notificationBuilder: NotificationCompat.Builder =
NotificationCompat.Builder(context, channelId)
notificationBuilder.setSmallIcon(R.mipmap.ic_launcher_round)
notificationBuilder.color = 0x474E54
notificationBuilder.setContentTitle(title)
.setContentText(message)
.setAutoCancel(false)
.setStyle(NotificationCompat.BigTextStyle())
.setSound(Settings.System.DEFAULT_NOTIFICATION_URI)
.setContentIntent(pendingIntent)
.setDefaults(Notification.DEFAULT_ALL)
.setAutoCancel(true)
.setCategory(NotificationCompat.CATEGORY_SOCIAL)
val notificationManager: NotificationManager =
context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val importance = NotificationManager.IMPORTANCE_HIGH
val notificationChannel = NotificationChannel(
channelId,
channelId,
importance
)
notificationChannel.enableLights(true)
notificationChannel.lightColor = Color.RED
notificationChannel.enableVibration(true)
notificationChannel.vibrationPattern = longArrayOf(0, 1000, 500, 1000)
notificationBuilder.setChannelId(channelId)
notificationManager.createNotificationChannel(notificationChannel)
} else {
notificationBuilder.priority = NotificationCompat.PRIORITY_HIGH
notificationBuilder.setVibrate(longArrayOf(0, 1000, 500, 1000))
}
notificationManager.notify(notificationId, notificationBuilder.build())
您可以根据需要更改它。希望这会有所帮助。:)
推荐阅读
- javascript - 通过 API 在 Slider Revolution 插件中为每张幻灯片嵌套和检索变量
- javascript - 在 React 类中添加函数的位置 - 在 render() 之前 vs 在 render() 中 vs 在类之外
- enums - 当成员枚举标记位于最外层时,使用 serde 反序列化结构?
- c++ - 类中的 Arduino 步进电机指针不起作用
- c - 是否可以在不创建变量的情况下将结构传递给函数?
- eclipse - 为什么我在 Eclipse 中看不到 Anaconda 库?
- java - 如何制作 TextArea 和列表填充面板?
- java - 带有bom的maven多项目结构
- python - 在新函数中使用函数的结果(加上更多)
- php - 如何使用复选框中的多个值构建 WHERE 条件?