Notification通知栏的使用

1.获取NotificationManager,用来控制通知栏的显示。

NotificationManager nm=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

2.得到Notification对象,用来显示在通知栏
Notification notification = new Notification();  

3.给Notification附加各种属性
 
        // 设置显示在手机最上边的状态栏的图标 ,必须属性,缺了显示不出来 
        notification.icon = R.drawable.ic_launcher;  
        // 当当前的notification被放到状态栏上的时候,提示内容   
        notification.tickerText = "下载中...";     

4.得到PendingIntent对象,PendingIntent主要用来在进程间通信,通知栏与程序不在一个进程
 
 
        Intent intent = new Intent();  
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
其中intent所指向的class就是点击通知栏的通知后跳转的Activity界面,如果不设置,就不跳。

5.设置把通知栏下拉后出现的界面
  notification.setLatestEventInfo(this, "下载", "fedsa", pendingIntent);  
界面中有1个标题、一行内容、一个图片与通知栏出现的时间。由于没设置图片,图片为默认。

6.把设置好的通知信息显示到通知栏里
nm.notify(1, notification);  
其中第一个参数为这个通知的id,自定义的。同一时间这个值必须唯一。



Notification一些有用的flag与字段:
 1. FLAG_AUTO_CANCEL 当用户点击通知栏时通知栏取消。
 2. FLAG_INSISTENT  设置的声音会重复响,除非用户清除掉这个通知或者点击进入这个通知所指向的程序
 3. FLAG_NO_CLEAR  设置了这个,通知将永不会被取消,就算clear也没用
 4. FLAG_ONLY_ALERT_ONCE 设置这个能让通知每发一次就响一次设置好的声音
 5. FLAG_SHOW_LIGHTS 设置了这个才能让LED亮(通知不一定只能通知消息,也能通知背光灯闪烁,播放音乐等)
 1. audioStreamType    用来播放的音频类型,int类型
 2. contentIntent   当点击通知栏时执行的 PendingIntent
 3. contentView     RemoteViews类型,通知栏的界面
 4. flags  标志位,值就设置上面的标志,不设置就是默认的设置。
 5. icon   图标,状态栏里的图标。(必须有)
 6. number  这个通知显示的次数
 7. sound  Uri类型值,要播放的声音
 8. tickerText 显示在状态栏的文字(不必须)
 9. when  时间戳,不设置就是now,用于显示在通知栏

 10还有几个字段看不懂什么意思.......(API 8)



一般来说简单的通知栏已经能满足要求了,不过我们也可以设置一些复杂点的。
如果不满足系统提供的通知栏界面,那么可以自定义一个界面。
自定义的方法就是给contentIntent 与contentView 字段赋值,把

notification.setLatestEventInfo(this, "下载", "fedsa", pendingIntent); 
这一句去掉。
RemoteViews里可以设置的View有进度条、图片、文字。
比如设置view里的文字   view.setTextViewText(R.id.tv, "下载"+progress+"%");
第一个参数是TextView的id,第二个是TextView要显示的内容。
RemoteViews的对象可以这样得到
RemoteViews view=new RemoteViews(getPackageName(),R.layout.notification_view);

如果要更新通知栏里的内容,可以nm.notify(1, notification);  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值