Android 如何在状态栏上隐藏 NotificationCompat.Builder 通知的图标?

Posted

技术标签:

【中文标题】Android 如何在状态栏上隐藏 NotificationCompat.Builder 通知的图标?【英文标题】:Android how to hide NotificationCompat.Builder notification`s icon on status bar? 【发布时间】:2013-03-31 20:18:19 【问题描述】:

我的问题很简单,但很长时间都无法解决,所以我在这里问。

如何隐藏状态栏中显示的正在进行的通知图标?我正在使用NotificationCompat.Builder 对象创建通知。我试图跳过(当未选中显示图标的选项时)builder.setSmallIcon() 函数调用,但这导致通知屏幕上没有通知。

【问题讨论】:

【参考方案1】:

android 4.1 (API 16) 开始,可以指定通知的priority。如果您将set that flag 转为PRIORITY_MIN,则通知图标不会显示在状态栏上。

builder.setPriority(NotificationCompat.PRIORITY_MIN);

从 Android 8.0 Oreo(API 级别 26)开始,您必须创建一个 NotificationChannel 并将其 importance 设置为 IMPORTANCE_MIN

NotificationChannel channel = 
      new NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_MIN);
notificationManager.createNotificationChannel(channel);
...
builder.setChannelId(channel.getId());

【讨论】:

这是一个有用的解决方案,但它对我不起作用,因为我倾向于针对早期的 android 版本。 只是在 Android 10 中的一个注释,此解决方案仍然有效通知在通知阴影中折叠,因此用户需要展开它才能看到它。 【参考方案2】:

如何隐藏状态栏中显示的正在进行的通知图标?

你没有。

我尝试跳过(当未选中显示图标的选项时)builder.setSmallIcon() 函数调用,但这导致通知屏幕中没有通知。

正确。由于提出Notification 的主要目的是在状态栏中放置一个图标,因此没有办法在状态栏中放置一个图标。

【讨论】:

好的,感谢您的澄清。 :) 那么,如果我理解正确,当其他应用程序提供在运行时事件中显示/隐藏图标的选项时,它们会使用整个通知进行操作吗?附:我会提高你的回答率,但我没有最低声誉水平。 @aphelion:“所以,如果我理解正确,当其他应用程序提供在运行时事件中显示/隐藏图标的选项时,它们会使用整个通知进行操作?” ——大概。

以上是关于Android 如何在状态栏上隐藏 NotificationCompat.Builder 通知的图标?的主要内容,如果未能解决你的问题,请参考以下文章

如何在android的状态栏上显示倒数计时器,如时间显示?

如何使用phonegap在状态栏上创建通知

显示/隐藏系统栏上的 Android 屏幕闪烁

如何清除状态栏上的推送通知警报 - android

如何使用 React Native 去除 android 上状态栏上的黑色覆盖

Android解析推送通知不会在状态栏上显示消息