Android如何隐藏NotificationCompat.Builder通知栏中的图标?

5

我的问题很简单,但我花了很长时间都没有解决,所以现在来问一下。

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

2个回答

15

自从Android 4.1(API 16)以来,可以指定通知的优先级。如果将该标志设置为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版本。 - aphelion
在Android 10中,只是需要注意的是,这个解决方案仍然有效,但是通知会在通知栏中折叠,因此用户需要展开它才能看到。 - Sam

2
如何隐藏状态栏中显示的正在进行通知图标?
你不能这样做。
当选项未勾选时,我尝试跳过builder.setSmallIcon()函数调用,但结果是通知屏幕上没有通知。
是的,因为发出通知的主要目的是在状态栏中放置一个图标,所以没有办法不在状态栏中放置图标。

好的,谢谢你澄清了这一点。 :) 所以,如果我理解正确的话,当其他应用程序在运行时事件中提供显示/隐藏图标选项时,它们是操作整个通知而不是仅仅图标?附言:我会提高你的回答率,但我没有足够的声望等级。 - aphelion
@aphelion:“所以,如果我理解正确,当其他应用程序在运行时事件中提供显示/隐藏图标选项时,它们是针对整个通知操作的?”-- 大概是这样。 - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接