Android: 分组通知和摘要在 4.4 及以下版本仍单独显示
Android: Grouped notifications and summary still shown separately on 4.4 and below
我想实施 stacked notifications on Android Wear 为此,我为每个 "item" 创建了 1 个摘要通知和 N 个单独通知。我只想在 phone 上显示摘要。这是我的代码:
private void showNotifications() {
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
showNotification1(notificationManager);
showNotification2(notificationManager);
showGroupSummaryNotification(notificationManager);
}
private void showNotification1(NotificationManager notificationManager) {
showSingleNotification(notificationManager, "title 1", "message 1", 1);
}
private void showNotification2(NotificationManager notificationManager) {
showSingleNotification(notificationManager, "title 2", "message 2", 2);
}
protected void showSingleNotification(NotificationManager notificationManager,
String title,
String message,
int notificationId) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentTitle(title)
.setContentText(message)
.setSmallIcon(R.mipmap.ic_launcher)
.setGroupSummary(false)
.setGroup("group");
Notification notification = builder.build();
notificationManager.notify(notificationId, notification);
}
private void showGroupSummaryNotification(NotificationManager notificationManager) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentTitle("Dummy content title")
.setContentText("Dummy content text")
.setStyle(new NotificationCompat.InboxStyle()
.addLine("Line 1")
.addLine("Line 2")
.setSummaryText("Inbox summary text")
.setBigContentTitle("Big content title"))
.setNumber(2)
.setSmallIcon(R.mipmap.ic_launcher)
.setCategory(Notification.CATEGORY_EVENT)
.setGroupSummary(true)
.setGroup("group");
Notification notification = builder.build();
notificationManager.notify(123456, notification);
}
这在 Android 5.1 上工作得很好,只有摘要显示在 phone 的通知栏中:
但在 Android 4.4 上,它还显示单独的通知 1 和 2:
在这两种情况下,Android Wear 上的通知都会根据需要显示在堆栈中。如何让Android4.4只在通知栏显示摘要通知?
使用
解决了这个问题
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
而不是
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
并在相应的方法签名中将 NotificationManager 替换为 NotificationManagerCompat。
您只需删除 showSingleNotification
方法并替换
notificationManager.notify(123456, notification);
和
notificationManager.notify(123456, builder);
它工作正常。
我想实施 stacked notifications on Android Wear 为此,我为每个 "item" 创建了 1 个摘要通知和 N 个单独通知。我只想在 phone 上显示摘要。这是我的代码:
private void showNotifications() {
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
showNotification1(notificationManager);
showNotification2(notificationManager);
showGroupSummaryNotification(notificationManager);
}
private void showNotification1(NotificationManager notificationManager) {
showSingleNotification(notificationManager, "title 1", "message 1", 1);
}
private void showNotification2(NotificationManager notificationManager) {
showSingleNotification(notificationManager, "title 2", "message 2", 2);
}
protected void showSingleNotification(NotificationManager notificationManager,
String title,
String message,
int notificationId) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentTitle(title)
.setContentText(message)
.setSmallIcon(R.mipmap.ic_launcher)
.setGroupSummary(false)
.setGroup("group");
Notification notification = builder.build();
notificationManager.notify(notificationId, notification);
}
private void showGroupSummaryNotification(NotificationManager notificationManager) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentTitle("Dummy content title")
.setContentText("Dummy content text")
.setStyle(new NotificationCompat.InboxStyle()
.addLine("Line 1")
.addLine("Line 2")
.setSummaryText("Inbox summary text")
.setBigContentTitle("Big content title"))
.setNumber(2)
.setSmallIcon(R.mipmap.ic_launcher)
.setCategory(Notification.CATEGORY_EVENT)
.setGroupSummary(true)
.setGroup("group");
Notification notification = builder.build();
notificationManager.notify(123456, notification);
}
这在 Android 5.1 上工作得很好,只有摘要显示在 phone 的通知栏中:
但在 Android 4.4 上,它还显示单独的通知 1 和 2:
在这两种情况下,Android Wear 上的通知都会根据需要显示在堆栈中。如何让Android4.4只在通知栏显示摘要通知?
使用
解决了这个问题NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
而不是
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
并在相应的方法签名中将 NotificationManager 替换为 NotificationManagerCompat。
您只需删除 showSingleNotification
方法并替换
notificationManager.notify(123456, notification);
和
notificationManager.notify(123456, builder);
它工作正常。