从 Android 8.0(API 级别 26)开始,当关联应用有活动通知时,通知徽章(也称为通知点)会出现在启动器图标上。用户可以触摸并按住应用图标以显示通知,以及任何应用快捷方式,如图 1 所示。
这些点默认情况下会出现在支持它们的启动器应用中,您的应用无需执行任何操作。但是,在某些情况下,您可能不希望显示通知点,或者您希望精确控制哪些通知显示在那里。
禁用徽章
在某些情况下,徽章对您的通知没有意义,因此您可以通过在您的NotificationChannel
对象上调用setShowBadge(false)
来在每个渠道的基础上禁用它们。
例如,您可能希望在以下情况下禁用通知徽章:
- 持续通知:大多数持续通知(例如图像处理、媒体播放控件或当前导航说明)作为徽章没有意义。
- 日历提醒:避免对当前时间发生的事件进行徽章标记。
- 时钟或闹钟事件:避免对与当前闹钟相关的通知进行徽章标记。
以下示例代码演示如何隐藏通知渠道的徽章:
Kotlin
val id = "my_channel_01" val name = getString(R.string.channel_name) val descriptionText = getString(R.string.channel_description) val importance = NotificationManager.IMPORTANCE_LOW val mChannel = NotificationChannel(id, name, importance).apply { description = descriptionText setShowBadge(false) } val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(mChannel)
Java
String id = "my_channel_01"; CharSequence name = getString(R.string.channel_name); String description = getString(R.string.channel_description); int importance = NotificationManager.IMPORTANCE_LOW; NotificationChannel mChannel = new NotificationChannel(id, name, importance); mChannel.setDescription(description); mChannel.setShowBadge(false); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.createNotificationChannel(mChannel);
设置自定义通知计数
默认情况下,每个通知都会递增如图 1 所示的触摸并按住菜单中显示的数字,但您可以为您的应用覆盖此数字。例如,如果您只使用一个通知来表示多条新消息,但希望计数代表新消息的总数,这将非常有用。
要设置自定义数字,请在通知上调用setNumber()
,如下所示:
Kotlin
var notification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID) .setContentTitle("New Messages") .setContentText("You've received 3 new messages.") .setSmallIcon(R.drawable.ic_notify_status) .setNumber(messageCount) .build()
Java
Notification notification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID) .setContentTitle("New Messages") .setContentText("You've received 3 new messages.") .setSmallIcon(R.drawable.ic_notify_status) .setNumber(messageCount) .build();
修改通知的触摸并按住菜单图标
如果可用,触摸并按住菜单会显示与通知关联的大型或小型图标。默认情况下,系统会显示大型图标,但您可以调用Notification.Builder.setBadgeIconType()
并传入BADGE_ICON_SMALL
常量以显示小型图标。
Kotlin
var notification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID) .setContentTitle("New Messages") .setContentText("You've received 3 new messages.") .setSmallIcon(R.drawable.ic_notify_status) .setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL) .build()
Java
Notification notification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID) .setContentTitle("New Messages") .setContentText("You've received 3 new messages.") .setSmallIcon(R.drawable.ic_notify_status) .setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL) .build();
隐藏重复的快捷方式
如果您的应用创建的通知重复了应用快捷方式,您可以通过调用setShortcutId()
在通知处于活动状态时暂时隐藏该快捷方式。
有关使用通知的更多示例代码,请参阅People 示例。