修改通知标记

从 Android 8.0(API 级别 26)开始,通知标志(也称为 通知圆点——当关联的应用具有 有效通知。用户可以 触摸和按住应用图标即可显示通知 应用快捷方式,如 图 1.

默认情况下,这些圆点会显示在支持它们的启动器应用中, 您的应用无需执行任何操作。不过,在某些情况下 不想显示通知圆点或希望精确地控制 以及显示哪些通知

图 1. 通知标志以及触控和按住菜单。

停用标志

在某些情况下,标志不适合您的通知,因此 可以调用 setShowBadge(false) 在您的NotificationChannel上 对象。

例如,您可能想在以下应用中停用通知标志, 情况:

  • 持续性通知:大多数持续性通知,例如图片处理通知、 媒体播放控件或当前的导航说明无意义 用作徽章。
  • 日历提醒:避免当前时间发生标志事件。
  • 时钟或闹钟事件:避免与当前闹钟相关的标志通知。

以下示例代码演示了如何隐藏 一个通知渠道:

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 示例