【问题标题】:Notification Badges not woking in Android O通知徽章在 Android O 中不起作用
【发布时间】:2017-04-02 17:25:42
【问题描述】:

在 Android O 开发者预览版中,谷歌引入了应该显示在启动器图标上的通知徽章。我正在使用来自开发频道的 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)

有人做过这方面的工作吗?我错过了什么吗?

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


也尝试过 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 有没有办法通过代码选择我丢失的徽章?如果你能分享一个代码 sn-p,我可以试试。
  • 我很确定您需要一个兼容的启动器来使这项工作端到端。由于还没有任何启动器支持此功能,因此您可能看不到它的效果。
  • @AniketThakur:我指的是setShowBadge(true) 上的NotificationChannel,然后在创建Notification 时使用该频道。
  • @Shmuel:我希望随 Google API 模拟器提供的启动器和硬件固件构建最终会支持徽章。我很惊讶他们似乎还没有这样做。

标签: android badge android-8.0-oreo


【解决方案1】:

Android-O 的通知标志示例在早期预览版本的模拟器中似乎不起作用。但在最新版本的 Android-O 开发人员 preview-3 中,徽章会按照Notification Badges 部分中的说明正确显示。

要显示通知徽章,您需要将通知渠道的setShowBadge(boolean) 设置为true。默认情况下,徽章将显示如下:

如果有多个通知,则长按时会显示计数。计数会根据活动通知自动增加/减少。您还可以使用Notification.Builder.setNumber() 手动调整计数。

长按启动器图标时显示通知计数的示例:

确保您使用的是最新的 API:

compileSdkVersion 26 
buildToolsVersion "26.0.0"
targetSdkVersion 26

在像素 Android 模拟器版本 26.1.1 中测试。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-28
  • 1970-01-01
  • 1970-01-01
  • 2022-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多