简介
通知 (Notification) 提供应用程序希望向用户发出一些提示信息,而该程序又不在前台运行时,就可以借助通知来实现。
发出一条通知后,手机最上方的状态中会显示一个通知的图标,下拉状态栏就可以看到通知的详细内容。
通知的基本用法
获取 NotificationManager
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
NotificationChannel mChannel = new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_LOW);
manager.createNotificationChannel(mChannel);
使用 Builder 构造器创建 Notification 对象
借助 support-v4 库中的 NotificationCompat 类。
//添加点击事件
Intent intent = new Intent(this, NotificationActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
Notification notification = new NotificationCompat.Builder(this, mChannel.getId())
.setContentTitle("This is content title")//设置标题
.setContentText("This is content text")//设置内容
.setWhen(System.currentTimeMillis())//设置被创建的时间
.setSmallIcon(R.mipmap.ic_launcher)//设置通知的小图标
.setLargeIcon(BitmapFactory.decodeResource(
getResources(), R.mipmap.ic_launcher))//设置大图标,下拉的时候会看到
.setContentIntent(pendingIntent) //点击事件,表示点击通知后会执行的动作
.setAutoCancel(true) //点击时通知消失
// 设置通知的重要程度
.setPriority(NotificationCompat.PRIORITY_MAX)
// 设置通知音频
// .setSound(Uri.fromFile(new File("绝对路径")))
// 设置手机振动 数组下标为0 2 4 ...表示静止时间ms 下标为1 3 5...表示振动时间
// 例子表示为收到通知立刻振动1s静止1s然后再振动1s
// 控制手机振动需要声明权限 <uses-permission android:name="android.permission.VIBRATE"/>
// .setVibrate(new long[]{0, 1000, 1000, 1000})
// 设置LED灯,颜色 亮起的时长 暗去的时长
// .setLights(Color.GREEN, 1000, 1000)
// 直接使用通知的默认效果
// .setDefaults(NotificationCompat.DEFAULT_ALL)
// 设置通知长文本
// .setStyle(new NotificationCompat.BigTextStyle().bigText(
// "singleTask模式 每次该活动启动会检查返回栈中是否存在,如果存在,则会将直接使用改实例,并将这个活动之上的所有活动全部出栈,如果不存在则创建新活动"))
// 设置通知大图片
// .setStyle(new NotificationCompat.BigPictureStyle().bigPicture(
// BitmapFactory.decodeResource(getResources(), R.drawable.say)))
.build();
利用 NotificationManager 调用 Notification
notify() 方法接受两个参数,第一个参数是 id, 用来和第二个参数 Notification 对应。
manager.notify(1, notification); //显示通知
manager.cancel(1); //利用id, 可以关闭该通知