android - 通知组在没有摘要的情况下无法工作
问题描述
我正在实现通知并希望将它们分组以显示在通知栏中。
目前,我正在实现Android 官方开发者文档中的 Create a Group of Notifications中的示例。
我实现了这个方法:
private void makeNotification()
{
createNotificationChannel();
int SUMMARY_ID = 0;
String GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL";
String CHANNEL_ID = "MY_CHANNEL_ID";
Notification newMessageNotification1 =
new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_map_position_icon)
.setContentTitle("First summary")
.setContentText("You will not believe...")
.setGroup(GROUP_KEY_WORK_EMAIL)
.build();
Notification newMessageNotification2 =
new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_map_nav_position_icon_grey)
.setContentTitle("Second summary")
.setContentText("Please join us to celebrate the...")
.setGroup(GROUP_KEY_WORK_EMAIL)
.build();
Notification summaryNotification =
new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
.setContentTitle("Total summary")
.setContentText("Two new messages")
.setSmallIcon(R.drawable.ic_wdw_dont_drive)
.setGroup(GROUP_KEY_WORK_EMAIL)
.setGroupSummary(true)
.build();
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(1, newMessageNotification1);
notificationManager.notify(2, newMessageNotification2);
notificationManager.notify(SUMMARY_ID, summaryNotification);
}
该方法createNotificationChannel()
只是创建通道,为了更好的可读性,我把它留在这里。
现在文档说:
在 Android 7.0(API 级别 24)及更高版本上,系统会使用每个通知中的文本片段自动为您的组构建摘要。
所以最后一次notify()
调用应该是可选的,并且也创建了summaryNotification
。但是这个例子只在我通知摘要通知时对我有效。当我不这样做时,通知不会分组。
这里出了什么问题?
解决方案
在 Android 7.0(API 级别 24)及更高版本上,系统会使用每个通知中的文本片段自动为您的组构建摘要。
“摘要 [文本]”,但不是“组摘要通知”。这只是意味着您在摘要通知样式中设置的任何文本都将被 Android >= N 的分组通知中的组合文本替换。
这不会影响通知不分组而没有摘要的事实。
是的,这对我也有很大的误导性,必须努力学习。尝试在 Kitkat 上建立组并将其与 Nougat 组进行比较。
推荐阅读
- python - 避免在 Python 中多次打开/关闭文件
- angular - Angular HostListener preventDefault 不起作用
- python - 为什么,当附加一个列表并将代码分配给另一个变量时,我的代码评估为“无”?
- azure - 使用 powershell 获取 Azure DevOps 服务连接服务主体 ID
- javascript - Three.js 只是画了一个白屏
- javascript - 想不通这个功能
- c# - 如何使用具有 ActionFilters 的通用基本控制器
- ssas-tabular - 在 SSAS 表格模型中使用 & 号
- python - Python_将日期时间差转换为天差
- c++ - Visual C++/CLR 中是否有类似 UserControl 的东西