通知徽章在Android O中无法正常工作

6

在 Android O 开发者预览版中,Google 引入了通知徽章,应该显示在启动器图标上。我正在使用从 dev 渠道获得的 Android O 模拟器。我编写了一个简单的代码来显示通知徽章,但似乎无法工作 -

        Notification notification = new Notification.Builder(getApplicationContext())
                .chooseBadgeIcon(Notification.BADGE_ICON_SMALL)
                .setSmallIcon(android.R.drawable.btn_star)
                .setNumber(10)
                .build();

        mNotificationManager.notify(1, notification);

它只会显示普通的通知。

API - https://developer.android.com/reference/android/app/Notification.Builder.html#chooseBadgeIcon(int)

有人已经在处理这个问题了吗?我是不是漏掉了什么?

在设置中启用了徽章显示。

enter image description here


我也尝试了使用NotificationChannel,但不起作用 -

    NotificationChannel mChannel = new NotificationChannel("TestBadge_id", "TestBadgeName", NotificationManager.IMPORTANCE_HIGH);
    mChannel.enableLights(true);
    mChannel.setLightColor(Color.RED);
    mChannel.setShowBadge(true);
    mNotificationManager.createNotificationChannel(mChannel);


    Notification notification = new Notification.Builder(getApplicationContext())
                .chooseBadgeIcon(Notification.BADGE_ICON_SMALL)
                .setSmallIcon(android.R.drawable.btn_star)
                .setNumber(10)
            .setChannel("TestBadge_id")
                .build();

        mNotificationManager.notify(1, notification);

我无法在Nexus 5X上使用固件镜像使其正常工作,即使在我选择启用徽章的频道中也是如此。我猜测这个功能可能尚未实现。 - CommonsWare
我非常确定你需要一个兼容的启动器才能使其完全运作。鉴于目前还没有支持此功能的启动器,因此您可能看不到其效果。 - Shmuel
@AniketThakur:我指的是在NotificationChannel上使用setShowBadge(true),然后在创建Notification时使用该通道。 - CommonsWare
@Shmuel:我希望Google APIs模拟器提供的启动器和硬件固件版本最终能够支持徽章。我很惊讶它们似乎还没有这样做。 - CommonsWare
@CommonsWare同意。但这似乎是现实情况。坦白地说,AOSP启动器对于谷歌并不重要。他们有Google Now / Pixel Launcher。我相信那些启动器最终会支持图标徽章,甚至可能比AOSP启动器更早。 - Shmuel
显示剩余2条评论
1个回答

7
Android-O的通知徽章示例在早期预览版的模拟器中似乎无法正常工作。但是,在最新的 Android-O developer preview-3 中,徽章按照通知徽章部分所述正确显示。
要显示通知徽章,您需要将一个通知渠道的setShowBadge(boolean)设置为true。默认情况下,徽章将显示如下: 展示徽章的示例图片 长按后如果有一个以上的通知,则会显示计数。计数根据活动通知自动增加/减少。您还可以使用Notification.Builder.setNumber()手动调整计数。
以下是在启动器图标上长按时显示通知计数的示例: 显示计数的徽章通知 请确保您的目标API是最新的。
compileSdkVersion 26 
buildToolsVersion "26.0.0"
targetSdkVersion 26

测试过的Android像素模拟器版本为26.1.1


根据bizzard的回答,我能够在Pixel Android API 26模拟器中看到通知徽章。然而,我既没有将通知渠道的setShowBadge(boolean)设置为true,也没有使用Notification.Builder.setNumber() - Chris Li

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