Android O中的通知标记

6

我正在使用装有Android Oreo SDK的Google Nexus 5x进行测试。在主屏幕上,我无法在应用程序图标中找到通知徽章,即使我收到了来自应用程序的通知。此外,应用程序快捷方式也没有显示数字。以下是代码片段:

 final NotificationManager mNotific=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

            CharSequence name="Ragav";
            String desc="this is notific";
            int imp=NotificationManager.IMPORTANCE_HIGH;
            final String ChannelID="my_channel_01";

            NotificationChannel mChannel=new NotificationChannel(ChannelID,name,imp);
            mChannel.setDescription(desc);
            mChannel.setLightColor(Color.CYAN);
            mChannel.canShowBadge();
            mChannel.setShowBadge(true);

            mNotific.createNotificationChannel(mChannel);

            final int ncode=1;

            String Body="This is testing notific";
            final Notification n= new Notification.Builder(getApplicationContext(),ChannelID)
                    .setContentTitle(getPackageName())
                    .setContentText(Body)
                    .setNumber(5)
                    .setBadgeIconType(R.mipmap.ic_launcher_round)
                    .setSmallIcon(R.mipmap.ic_launcher_round)
                    .setAutoCancel(true).build();

            for(int i=0;i<25;i++) {
                Thread.sleep(1000);
                mNotific.notify(ncode, n);
            }
1个回答

1

您无法自定义出现在应用程序启动器图标上的通知徽章(点)的外观。但是,当您长按您的应用程序启动器图标时,可以自定义长按菜单的一些元素,例如您尝试的.setNumber(5)将显示在那里。

有关更多见解,请参阅此处:通知徽章调整通知徽章

参考.setBadgeIconType(R.mipmap.ic_launcher_round),我建议您阅读此内容


** 编辑 ** (问题误解)

我已经测试了您的代码(不使用for循环,仅调用mNotific.notify(ncode, n);一次)在Nexus 5X模拟器上,它可以100%正常工作并显示通知点。这不是与代码相关的问题。

Nexus 5X物理设备的原生启动器应用程序(Google Now)即使您可以在设备上的Oreo设置中打开通知点,但不支持通知点。请参考thisthis链接。要在Nexus 5X物理设备上启用通知点,您必须安装自定义Pixel Launcher应用程序,例如Rootless Pixel Launcher


2
我的问题是应用程序快捷方式在主屏幕上没有显示通知徽章。我使用了 "mChannel.setShowBadge(true);" 在图标的角落显示点来显示它,但它不起作用。因为我只能在主屏幕上看到应用程序图标。 - Ragavendra M
1
抱歉,我误解了你的问题,“应用程序快捷方式未显示数字”让我认为你希望使用.setNumber(5)设置的数字显示在通知徽章上。我已经复制粘贴了您的代码,没有使用for循环(只调用一次mNotific.notify(ncode, n)),它可以100%地工作,会显示通知徽章。确保您正在测试的设备运行Android Oreo,清除您的应用程序数据(以删除所有先前创建的通知通道),删除for循环和Thread.sleep(1000);,然后再次测试,它应该可以工作。 - Wess
好的,我在一个运行Oreo的Nexus 5X模拟器上测试了你的代码,它百分之百地工作。我认为你的代码没有任何问题,你可以通过在另一台设备上进行测试来验证。我认为是你的设备启动器应用程序不支持通知点。你是否正在使用原生的Nexus 5X启动器?如果是,请检查此链接,你必须安装Pixel启动器并手动授予它通知访问权限以启用通知点。如果有帮助,请告诉我,我会更新答案。 - Wess
我使用Nexus 5X设备,并在其中启动了Oreo操作系统版本。我还在应用程序通知设置中启用了允许通知点选项。我还有一个疑问,当我使用NotificationCompat.Builder创建通知对象时…… - Ragavendra M
1
Nexus 5X使用Google Now启动器应用程序,即使您的设置可能具有该选项,也不支持通知点,请检查此链接和此链接。 "请注意,通知点仅适用于Pixel和Pixel XL手机。它们在Nexus和Pixel C设备上不可用。" - 我认为这已经很清楚了。如前所述,您需要手动安装Pixel启动器应用程序,这不是与代码相关的问题。 - Wess
显示剩余6条评论

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