Android7.0系统对通知栏进行了升级,在同一个应用程序下,如果超过4条通知,会自动把通知进行分组。
那我们可以把分组分成两部分组头和组员:
组头是开心就好^,组员就是某一条的通知。
点击下拉列表显示出全部组员信息。点击某一条组员根据ContentIntent进行跳转。
但是在这里又一个问题,就是点击组头的时候,无法控制他的跳转。
这就导致测试人员给我提bug了。
那有问题了就该去解决啊。
怎么解决呢
- 取消分组
设置这两个方法,就会取消分组每个组员都单个显示:
setGroupSummary(false)
setGroup("group")
完整代码
int timeMillis = (int) System.currentTimeMillis();
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentTitle("标题")
.setSmallIcon(R.mipmap.ic_launcher)//图标必须设置,如果不设置会报错
.setContentText("内容")
.setAutoCancel(true)
.setTicker("动画")
.setWhen(timeMillis)
.setGroupSummary(false)
.setGroup("group")
.setContentIntent(getContentIntent(timeMillis))
//等价于setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE);
//.setDefaults(Notification.DEFAULT_ALL)
//.setSound(Uri.parse("file:///sdcard/dance.mp3"))
//.setLights(0xff00eeff, 500, 200)
.setVibrate(new long[]{0, 300, 500, 700})//实现效果:延迟0ms,然后振动300ms,在延迟500ms,接着在振动700ms。
.setNumber(4);
Notification build = builder.build();
//设置三色灯提醒
// build.flags = Notification.FLAG_SHOW_LIGHTS;
// build.ledARGB = 0xff00eeff;
// build.ledOnMS = 500;
// build.ledOffMS = 200;
nm.notify(timeMillis, build);
那这么设置会是什么样的效果呢?
- 自己设置分组,但是有问题,所以项目中没有使用,就是点击组头没有反应。哪位大神如果知道怎么做请给我留言。
int timeMillis = (int) System.currentTimeMillis();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
final NotificationCompat.Builder builder2 = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setStyle(new NotificationCompat.BigTextStyle())
.setGroup(NOTIFICATION_GROUP)
.setAutoCancel(true)
.setGroupSummary(true);
final Notification notification = builder2.build();
nm.notify(1, notification);
}
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder = builder.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("大大标题")
.setContentText("小小内容")
.setGroup(NOTIFICATION_GROUP)
.setAutoCancel(true)
.setGroupSummary(false)
//.setGroup("group")
.setContentIntent(getContentIntent(timeMillis));
nm.notify(timeMillis, builder.build());
在我的项目中,只有android7.0版本以下都是正常的,所以我对版本进行了控制。
还是点击下拉出现组员条目信息。
但是有个问题,就是点击组头没反应。
我想自己控制逻辑。。。。。