1、Notification的必要的三个方法
- 小图标,通过 setSmallIcon() 方法设置
- 标题,通过 setContentTitle() 方法设置
- 内容,通过 setContentText() 方法设置
2、Notification的通常使用
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); // notification跳转的意图 Intent intent = new Intent(context, MainActivity.class); intent.putExtra("currentIndex" , 2); PendingIntent pendingIntent = PendingIntent.getActivity(context , 1 , intent , PendingIntent.FLAG_UPDATE_CURRENT); Notification.Builder builder = new Notification.Builder(context) .setSmallIcon(R.drawable.icon_mine_manage) .setLargeIcon(BitmapFactory.decodeResource(getResources() ,R.drawable.ic_login_logo)) .setContentTitle("我是标题") .setContentText("this is content are you readly??") .setAutoCancel(true)//点击后消失 .setContentInfo("我是信息---")//显示在右下角的文字 8.0不显示 未解决 .setSubText("subtext")//显示在小图标后面的文字(不知道怎么更改前面的myAppilcation) .setProgress(100 , 10 , false)//设置进度条 最后一个参数 true动态显示 false 静态显示 .setContentIntent(pendingIntent)//设置notification的点击跳转 详解可看2.1 .setOngoing(true)//禁止删除 .setWhen(System.currentTimeMillis());//设置时间 (8.0不显示 未解决)
notificationManager.notify(1 , builder.build());//发送
2.1 notification跳转的意图
-
FLAG_CANCEL_CURRENT:如果当前系统中已经存在一个相同的 PendingIntent 对象,那么就将先将已有的 PendingIntent 取消,然后重新生成一个 PendingIntent 对象。
-
-
FLAG_NO_CREATE:如果当前系统中不存在相同的 PendingIntent 对象,系统将不会创建该 PendingIntent 对象而是直接返回 null 。
-
-
FLAG_ONE_SHOT:该 PendingIntent 只作用一次。
-
-
FLAG_UPDATE_CURRENT:如果系统中已存在该 PendingIntent 对象,那么系统将保留该 PendingIntent 对象,但是会使用新的 Intent 来更新之前 PendingIntent 中的 Intent 对象数据,例如更新 Intent 中的 Extras 。
传递intent参数时一般使用 FLAG_UPDATE_CURRENT 否则可能接收不到传递的数据
在打开一个activity时 如果activity的lacuMode=singleTask 参数在OnNewIntent中接收
2.2 8.0时不显示notification
添加渠道 id和name可以自己设定
完整代码
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); Intent intent = new Intent(context, MainActivity.class); intent.putExtra("currentIndex" , 2); PendingIntent pendingIntent = PendingIntent.getActivity(context , 1 , intent , PendingIntent.FLAG_UPDATE_CURRENT); Notification.Builder builder = new Notification.Builder(context) .setSmallIcon(R.drawable.icon_mine_manage) .setLargeIcon(BitmapFactory.decodeResource(getResources() ,R.drawable.ic_login_logo)) .setContentTitle("我是标题") .setContentText("this is content are you readly??") .setAutoCancel(true) .setContentInfo("我是信息---") .setSubText("subtext") .setProgress(100 , 10 , false) .setContentIntent(pendingIntent) .setOngoing(true) .setWhen(System.currentTimeMillis()); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ NotificationChannel channel = new NotificationChannel("1", "mine", NotificationManager.IMPORTANCE_DEFAULT); notificationManager.createNotificationChannel(channel); builder.setChannelId("1"); } notificationManager.notify(1 , builder.build());