小图标和标题必须设置!
普通通知
setDefaults(),是设置震呼吸灯、声音。
setAutoCancel(true),点击通知关闭。
private void showNotificaTion() {
NotificationManager systemService = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Notification.Builder builder = new Notification.Builder(this);
//小图标
builder.setSmallIcon(R.mipmap.a);
// builder.setLargeIcon(R.mipmap.a);
builder.setContentTitle("通知标题");
builder.setContentText("通知消息内容");
builder.setTicker("提示获得消息");
//附加消息
builder.setContentInfo("附加消息");
//震动呼吸灯声音
builder.setDefaults(Notification.DEFAULT_ALL);
//点击通知关闭
builder.setAutoCancel(true);
//点击跳转
Intent intent = new Intent(this, MainActivity.class);
PendingIntent intent1 = PendingIntent.getActivity(this, 10, intent, PendingIntent.FLAG_ONE_SHOT);
builder.setContentIntent(intent1);
Notification build = builder.build();
//发送通知
systemService.notify(200,build);
}
进度条通知
计时器记得调start()方法
int progress=0;
private void showProgressBarNotiFicaTion() {
progress=0;
final NotificationManager systemService = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
final Notification.Builder builder = new Notification.Builder(this);
builder.setContentTitle("进度条通知");
builder.setSmallIcon(R.mipmap.a);
//计时器
CountDownTimer countDownTimer = new CountDownTimer(11000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
progress+=10;
builder.setProgress(100,progress,false);
systemService.notify(1,builder.build());
}
@Override
public void onFinish() {
systemService.cancel(1);
}
}.start();
systemService.notify(1,builder.build());
}
大图通知
private void showBitmapNotification() {
NotificationManager systemService = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification.Builder builder = new Notification.Builder(this);
builder.setContentTitle("大图通知");
builder.setSmallIcon(R.mipmap.a);
builder.setAutoCancel(true);
Intent intent = new Intent(this, MainActivity.class);
PendingIntent activity = PendingIntent.getActivity(this, 10, intent, PendingIntent.FLAG_ONE_SHOT);
builder.setContentIntent(activity);
//设置大图
Notification.BigPictureStyle bigPictureStyle = new Notification.BigPictureStyle();
bigPictureStyle.bigPicture(BitmapFactory.decodeResource(getResources(),R.mipmap.a));
//添加进builder
builder.setStyle(bigPictureStyle);
systemService.notify(2,builder.build());
}
列表-悬挂通知
使用悬挂通知,setFullScreenIntent()必须有。
PendingIntent:等待中的intent。
private void showListNotification() {
NotificationManager systemService = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification.Builder builder = new Notification.Builder(this);
builder.setContentTitle("悬挂通知");
builder.setSmallIcon(R.mipmap.a);
Notification.InboxStyle inboxStyle = new Notification.InboxStyle();
inboxStyle.addLine("aaaa");
inboxStyle.addLine("bbbb");
inboxStyle.addLine("3cccc");
inboxStyle.addLine("aaaa");
inboxStyle.addLine("bbbb");
inboxStyle.addLine("6cccc");
inboxStyle.addLine("aaaa");
inboxStyle.addLine("bbbb");
inboxStyle.addLine("9cccc");
builder.setStyle(inboxStyle);
Intent intent = new Intent(this, MainActivity.class);
PendingIntent activity = PendingIntent.getActivity(this, 10, intent, PendingIntent.FLAG_ONE_SHOT);
//悬挂通知-必须要有
builder.setFullScreenIntent(activity,true);
builder.setContentIntent(activity);
builder.setAutoCancel(true);
systemService.notify(3,builder.build());
}
自定义通知
用RemoteViews添加自定义xml文件布局。
private void showViewNotification() {
//只能自定义图片和文字
NotificationManager systemService = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification.Builder builder = new Notification.Builder(this);
builder.setSmallIcon(R.mipmap.a);
builder.setContentTitle("自定义通知");
RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.layout_item);
remoteViews.setTextViewText(R.id.textView,"测试");
remoteViews.setImageViewResource(R.id.imageView,R.mipmap.ic_launcher);
builder.setContent(remoteViews);
//API版本7以上用
// builder.setCustomContentView(remoteViews);
//点击通知关闭
builder.setAutoCancel(true);
Intent intent = new Intent(this, MainActivity.class);
PendingIntent activity = PendingIntent.getActivity(this, 10, intent, PendingIntent.FLAG_ONE_SHOT);
builder.setContentIntent(activity);
systemService.notify(4,builder.build());
}
分组通知
分组通知要用真机测试,模拟器不能实现想要的效果。
@RequiresApi(api = Build.VERSION_CODES.KITKAT_WATCH)
private void showGroupNotification() {
NotificationManager systemService = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification.Builder builder1 = new Notification.Builder(this);
Notification.Builder builder2 = new Notification.Builder(this);
Notification.Builder builder3 = new Notification.Builder(this);
Notification.Builder builder4 = new Notification.Builder(this);
builder1.setContentTitle("1");
builder2.setContentTitle("2");
builder3.setContentTitle("3");
builder4.setContentTitle("4");
builder1.setGroup("1");
builder2.setGroup("1");
builder3.setGroup("1");
builder4.setGroup("1");
builder1.setTicker("提示获得一条消息");
builder1.setSmallIcon(R.mipmap.a);
builder1.setContentText("1");
builder2.setTicker("提示获得两条消息");
builder2.setSmallIcon(R.mipmap.a);
builder2.setContentText("2");
builder3.setTicker("提示获得三条消息");
builder3.setSmallIcon(R.mipmap.a);
builder3.setContentText("3");
builder4.setTicker("提示获得四条消息");
builder4.setSmallIcon(R.mipmap.a);
builder4.setContentText("4");
Intent intent = new Intent(this, MainActivity.class);
PendingIntent activity = PendingIntent.getActivity(this, 10, intent, PendingIntent.FLAG_ONE_SHOT);
builder1.setContentIntent(activity);
systemService.notify(7,builder1.build());
systemService.notify(8,builder2.build());
systemService.notify(9,builder3.build());
systemService.notify(10,builder4.build());
}