FC 8.2 关于通知Notification

通知,既可以在活动里创建,也可以在广播接收器里创建,也可以在服务里创建。(一般只有在程序进入到后台的时候我们才需要使用通知,所以在活动里创建通知的场景比较少)

创建通知:

  • 需要一个NotificationManager对通知进行管理,调用getSystemService()获取,这个方法接收一个字符串参数用于确定获取系统的那个服务。
  • 接下来使用一个Builder构造器来创建Notification对象。(因为Android系统每个版本都会对通知部分功能进行修改,郭神的建议是使用support-v4库)
  • 设置title、text、通知时间、小图标
  • 使用NotificationManager的notify()方法让通知显示出来。两个参数,
    • 第一个参数是id,用于保证每个通知所指定的id都是不同的。
    • 第二个参数就是对象Notification
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(this)
        .setContentTitle("我是通知title")
        .setContentText("我是通知text")
        .setWhen(System.currentTimeMillis())
        .setSmallIcon(R.mipmap.ic_launcher)
        .build();
manager.notify(1, notification);

在界面添加一个按钮,为按钮添加事件,即我们刚写好的通知事件。

运行,点击按钮,手机上会出现一个通知,然而点击通知并没有什么动作,通知也没有消失,因为我们没有设置,接下来修改代码来实现:

  • 点击通知跳转页面
  • 点击通知后通知消息自动消失
  • 通知来时,led灯闪烁
  • 手机通知的默认效果
  • 设置通知的级别

点击通知跳转页面

这里需要使用PendingIntent,使用它的getActivity方法,其中需要的参数,第一个是context,(第二个一般用不到,传0即可)第三个是Intent对象,使用这个对象构建出pendingIntent的意图,第四个参数用于确定pengdingIntent的行为,这里传入0。

Intent intent = new Intent(this, NotificationActivity.class);
PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);

...

.setContentIntent(pi)//设置点击通知的动作

点击通知后通知消息自动消失

两种方法:

方法一:在活动的oncreate方法里添加代码:

NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.cancel(1);//1是对应通知的id

方法二,直接在Notification对象里添加代码:

.setAutoCancel(true)//设置点击后通知消息消失

通知的效果及其通知级别设置:

.setLights(Color.GREEN,1000,1000)//设置通知来是手机led等闪烁
.setDefaults(NotificationCompat.DEFAULT_ALL)//设置通知的默认效果,
.setPriority(Notification.PRIORITY_MAX)

完整代码:

Intent intent = new Intent(this, NotificationActivity.class);
PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(this)
        .setContentTitle("我是通知title")
        .setContentText("我是通知text")
        .setWhen(System.currentTimeMillis())
        .setSmallIcon(R.mipmap.ic_launcher)
        .setContentIntent(pi)//设置点击通知的动作
        .setAutoCancel(true)//设置点击后通知消息消失
        .setLights(Color.GREEN,1000,1000)//设置通知来是手机led等闪烁
        .setDefaults(NotificationCompat.DEFAULT_ALL)//设置通知的默认效果,
        .setPriority(Notification.PRIORITY_MAX)
        .build();
manager.notify(1, notification);

猜你喜欢

转载自blog.csdn.net/easy_purple/article/details/84256839
8.2