【问题标题】:Android, Java - setSmallIcon() hidden on new notification. But the notification still there in the notification drawerAndroid、Java - setSmallIcon() 隐藏在新通知中。但通知仍然存在于通知抽屉中
【发布时间】:2020-12-27 15:56:50
【问题描述】:

我真的迷路了。是否存在隐藏状态栏中的通知图标但通知仍然存在于抽屉中的情况?在回复现有通知后将传入消息附加到通知时会发生这种情况。

我用:

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)
                              )
                            ;

提前致谢。

【问题讨论】:

    标签: android push-notification android-notifications android-statusbar google-people-api


    【解决方案1】:

    您可以关注下方的通知生成器。我正在设置这样的小图标:

    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())
    

    您可以根据需要更改它。希望这会有所帮助。 :)

    【讨论】:

    • 谢谢,但还是不行。无论如何这与待定缩进有关吗?
    • @DurianDuraman 我已经更新了我的答案。希望这会有所帮助
    • 谢谢。我正在努力,正如你所给予的。但我正在研究的是MessageStyle。您所提供的仍然非常有用。我会努力的,让你知道再次感谢你。
    • 谢谢,我找到了问题。将发布答案。
    【解决方案2】:

    当您将与上次附加的标题不同的标题传递给下一次附加的通知时,问题似乎就出现了。这以某种方式删除了 smallIcon。所以我只是提供了 null 作为附加新回复的标题,它工作正常。我仍然需要深入挖掘以重新编写代码以使其适合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-02
      • 2017-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多