Notification 的基本操作主要有创建、更新、取消这三种。一个 Notification 的必要属性有三项,如果不设置则在运行时会抛出异常:
1.小图标,通过 setSmallIcon() 方法设置
2.标题,通过 setContentTitle() 方法设置
3.内容,通过 setContentText() 方法设置
1.获取 NotificationManager 实例
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
2.创建NotificationChannel,做相关配置
String channelid = "1";
String channelName = "default";
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
NotificationChannel channel =
new NotificationChannel(channelid, channelName,NotificationManager.IMPORTANCE_DEFAULT);
channel.enableLights(true);//开启指示灯,如果设备有的话。
channel.setLightColor(Color.RED);//设置指示灯颜色
channel.setShowBadge(true);//检测是否显示角标
manager.createNotificationChannel(channel);
}
3.实例化 NotificationCompat.Builder 并设置相关属性,生成Notification
Intent intent = new Intent(this, MainActivity.class);
PendingIntent activity = PendingIntent.getActivity(this, 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification build = new NotificationCompat.Builder(this, channelId)
.setSmallIcon(R.mipmap.ic_launcher)//设置小图
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.banner))//设置大图
.setContentText("我是内容")//设置内容
.setContentTitle("我是标题")//设置标题
.setContentIntent(activity)//设置延时意图
.setDefaults(Notification.DEFAULT_ALL)//设置提示效果
.setBadgeIconType(R.mipmap.ic_launcher)//设置设置角标样式
.setAutoCancel(true)//设置点击自动消失
.setNumber(3)//设置角标计数
.build();
4.调用NotificationManager 方法notify()发送通知
manager.notify(100, build);
取消 Notification
取消通知有如下 5 种方式:
1.点击通知栏的清除按钮,会清除所有可清除的通知
2.设置了 setAutoCancel() 或 FLAG_AUTO_CANCEL 的通知,点击该通知时会清除它
3.通过 NotificationManager 调用 cancel(int id) 方法清除指定 ID 的通知
4.通过 NotificationManager 调用 cancel(String tag, int id) 方法清除指定 TAG 和 ID 的通知
5.通过 NotificationManager 调用 cancelAll() 方法清除所有该应用之前发送的通知
网友评论