Notification

通知Notification

一般只有当程序进入到后台的时候我们才需要使用通知。使用NotificationManager来对通知进行管理。
NotificationManager manager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

创建一个Notification对象,这个对象用于存储通知所需的各种信息。我们可以使用它的有参构造函数来进行创建。Notification的有参构造函数接收三个参数,第一个参数用于指定通知的图标。第二个参数用于指定通知的ticker内容,当通知刚被创建的时候,它会在系统的状态栏一闪而过,属于一种瞬时的提示信息。第三个参数用于指定通知被创建的时候,以毫秒为单位。

Notification notification =new Notification(R.drawable.icon,"This is ticker text",System.currentTimeMillis());

使用Notification的setLastEventInfo()方法就可以给通知设置一个标准的布局。这个方法接收四个参数,第一个参数是Context.第二个参数用于指定通知的标题内容。第三个参数用于指定通知的正文内容。第四是用于通知点击跳转的PendingIntent对象,现在先传入null.

notification.setLastEventInfo(context,"This is content title","This is content text",null);

最后发送通知,调用NotificationManager的notify()方法就可以让通知显示出来了。notify()方法接收两个参数,第一个参数是id,要保证为每个通知所指定的id都是不同的。第二个参数则是Notification对象。
manager.notify(1,notification);

通知可点击,要通过PendingIntent来实现。它主要提供了几个静态方法用于获取PendingIntent的实例,可以根据需求来选择是使用getActivity()方法、getBroadcast()方法、还是getService()方法。这几个方法所接收的参数都是相同的,第一个参数是Context,第二个参一般用不到,通常都是传入0即可。第三个参数是一个Intent对象,可以通过这个对象构建出PendingIntent的“意图”。第四个参数用于确定PendingIntent的行为,有FLAG_ONE_SHOT、FLAG_NO_CREATE、FLAG_CANCEL_CURRENT和FLAG_UPDATE_CURRENT这四种值可选。

添加完点击事件:
    NotificationManager manager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
    Notification notification=new Notification(R.drawable.icon,"This is ticker text",System.currentTimeMillis());
    Intent intent=new Intent(this,NotificationActivity.class);
    PendingIntent pendingIntent=PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_CANCEL_CURRENT);
    notification.setLatestEventInfo(this,"This is content title","This is content text",pendingIntent);
    manager(1,notification);

取消通知:取消一直显示在系统的状态上显示。
    manager.cancel(1);  //取消 1 通知
通知扩展
Notification还有一些我们不经常使用的属性,像 sound vibrate LED灯的效果等。
sound:
    再通知发出的时候播放一段音频,sound这个属性是一个Uri对象,所以在指定音频文件的时候还需要先获取到音频文件对应的URI.
    Uri soundUri =Uri.fromFile(new File("/system/media/audio/ringtones/Basic_tone.ogg"));
    notification.sound=soundUri;

vibrate:
    在通知到来的时候让手机进行振动,使用的是vibrate这个属性。它是一个长整型的数组,用于设置手机静止和振动的时长,以毫秒为单位。下标为0的值表示手机静止的时长,下标为1的值表示手机振动的时长,下标为2的值又表示手机静止的时长,以此类推。
    long[] vibrates={0,1000,1000,1000};
    notification.vibrate=vibrate;
需要添加权限:
    <uses-permission android:name="android.permission.VIBRATE"/>

LED灯:
    在通知到来的时候控制LED灯的显示。ledARGB用于控制LED灯的颜色,一般有红绿蓝三种颜色可选。ledOnMS用于指定LED灯亮起的时长,以毫秒为单位。ledOffMS用于指定LED灯暗去的时长,也是以毫秒为单位。flags可用于指定通知的一些行为,其中包括显示LED灯这一选项。

notification.ledARGB = Color.GREEN;
notification.ledOnMS = 1000;
notification.ledOffMs =1000;
notification.flags = Notification.FLAG_SHOW_LIGHTS;

//系统通知默认效果,它会根据当前手机的环境来决定播放什么铃声,以及如何振动
notification.defaults = Notification.DEFAULT_ALL;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值