Notification
适配android o 的通知流程
1、新建一个Channel(频道)
private String CHANNEL_ID;
NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
CHANNEL_ID = "my_channel_01";//String类型,必须是唯一的key
CharSequence name = "my_channel";//频道名字
String Description = "This is my channel";
int importance = NotificationManager.IMPORTANCE_HIGH;
// 参数1:频道的ID。 参数2:用户可见的频道名称。 参数3:通知能打断用户的级别。
NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, importance);
// 该Channel的描述
mChannel.setDescription(Description);
// 设置发布到此频道的通知是否应在支持该功能的设备上显示通知灯。
mChannel.enableLights(true);
// 通知LED灯的颜色
mChannel.setLightColor(Color.RED);
// 设置发布到此频道的通知是否应该振动。
mChannel.enableVibration(true);
//返回发布到此通道的通知的振动模式。
mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
mChannel.setShowBadge(false);
if (notificationManager != null) {
notificationManager.createNotificationChannel(mChannel);
}
}
详情:channel
2.编写通知代码
Notification builder = new NotificationCompat.Builder(NotificationActivity.this,CHANNEL_ID)//必须加频道
.setContentTitle("This is title")
.setContentText("This is Text")
.setWhen(System.currentTimeMillis())//当前时间
.setSmallIcon(R.drawable.notication)
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.notication))
.setAutoCancel(true)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setLights(Color.RED,1000,1000)
.setStyle(new NotificationCompat.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(getResources(),R.drawable.big)))
.build();

一些进阶设置:
- 跳转到通知的页面
Intent intent = new Intent(NotificationActivity.this,MainActivity.class);
PendingIntent pi = PendingIntent.getActivities(this,0,new Intent[]{intent},0);//可以跳转多个
builder.setContentIntent(pi)
- setStyle
builder.setStyle(new NotificationCompat.BigTextStyle().bigText("The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method."))//文字
builder.setStyle(new NotificationCompat.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(getResources(),R.drawable.big));//图片


- 优先级//四个参数
builder.setPriority(NotificationCompat.PRIORITY_DEFAULT);
发送通知和取消通知
notificationManager.notify(1,builder);//第一个参数是number类型,第二个参数是通知实例
notificationManager.cancel(2);//取消通知
网友评论