2014.10.17总结

上午学习了通知

通知可以在活动中创建,也可以在广播接收器中创建,还也可以在服务中创建,但是步骤都是相同的。

一.创建管理:需要一个NotificationManager来对通知进行管理 ,调用getSystemService()得到,参数为字符串,用于确定系统的哪个服务,这里传入NOTIFICATION_SERVICE

NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

二.创建通知对象:创建Notification对象,用于存储通知所需的各种信息,Notification的有参构造器接收三个参数。

1,指定通知的图标

2,用于指定通知的ticker内容

3,用于指定通知被创建的时间,以毫秒为单位

Notification notification = new Notification(R.drawable.ic_launcher, "This is tickerText",System.currentTimeMillis());

三.对通知进行布局设定

调用Notification的setLatestEventInfo()方法,给通知设置一个标准的布局,接收四个参数。

1,Content

2,下拉通知栏就可以看到的内容的标题

3,下拉通知栏就可以看到的内容

4,PendingIntent对象,构建延迟执行的意图,当点击标题栏的时候所要执行的逻辑

notification.setLatestEventInfo(this, "This is content title","This is content text", pi);

pi是PendingIntent的一个实例,下面会介绍。


四.显示通知

调用NotificationManager的notify()方法来显示,notify()方法接收两个参数。

1.为id,要确保每个参数的id是不同的。这里的id我们设置为1

2.Notification对象

manager.notify(1, notification);

这样一个通知就建立好了



实现点击通知的效果,需要用到PendingIntent,可以把PendingIntent简单的理解为延迟执行的Intent。

1.获取实例,可以通过静态方法获取,例如:getActivi(),getBroadcast(),getService()方法

PendingIntent pi = PendingIntent.getActivity(this, 0, intent,PendingIntent.FLAG_CANCEL_CURRENT);

2.参数说明:上述几个所接收的参数是一样的。

1.Content

2.一般用不到,传入0

3.Intent对象,用于构建PendingIntent的意图

4.用于确定PendingIntent的行为,四个值


FLAG_CANCEL_CURRENT:如果当前系统中已经存在一个相同的PendingIntent对象,那么就将先将已有的PendingIntent取消,然后重新生成一个PendingIntent对象。

FLAG_NO_CREATE:如果当前系统中不存在相同的PendingIntent对象,系统将不会创建该PendingIntent对象而是直接返回null。

FLAG_ONE_SHOT:该PendingIntent只作用一次,如果该PendingIntent对象已经触发过一次,那么下次再获取该PendingIntent并且再触发时,系统将会返回一个SendIntentException,在使用这个标志的时候一定要注意哦。

FLAG_UPDATE_CURRENT:如果系统中已存在该PendingIntent对象,那么系统将保留该PendingIntent对象,但是会使用新的Intent来更新之前PendingIntent中的Intent对象数据,例如更新Intent中的Extras。这个非常有用,例如之前提到的,我们需要在每次更新之后更新Intent中的Extras数据,达到在不同时机传递给MainActivity不同的参数,实现不同的效果。

以上内容源于:http://blog.csdn.net/sir_zeng/article/details/8186835


NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.ic_launcher, "This is tickerText",System.currentTimeMillis());
Intent intent = new Intent(this, NotificationActivity.class);
PendingIntent pi = PendingIntent.getActivity(this, 0, intent,PendingIntent.FLAG_CANCEL_CURRENT);
notification.setLatestEventInfo(this, "This is content title","This is content text", pi);
manager.notify(1, notification);
以上就完成了通知了,要在点击顶部的通知栏之后取消,则需要调用NotificationManager的cancel()方法

NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.cancel(1);
此处的1即为上面问你创建通知指定的id。

当然我们需要对于通知来了的时候要有声音和振动提示,为了省事可以直接调用默认的就可以了

notification.defaults=Notification.DEFAULT_ALL;

这样有通知来了的时候就能有振动和声音了











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值