Notification 使用详解(很全)_第1页
Notification 使用详解(很全)_第2页
Notification 使用详解(很全)_第3页
Notification 使用详解(很全)_第4页
Notification 使用详解(很全)_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Notification 使用详解(很全)Java & android2011-01-25 14:23:21当用户有没有接到的电话的时候,Android顶部状态栏里就会出现一个小图标。提示用户有没有处理的快讯,当拖动状态栏时,可以查看这些快讯。Android给我们提供了NotificationManager来管理这个状态栏。可以很轻松的完成。 如果要添加一个Notification,可以按照以下几个步骤1:获取NotificationManager:NotificationManager m_NotificationManager=(NotificationManager)this.getSy

2、stemService(NOTIFICATION_SERVICE);2:定义一个Notification:Notificationm_Notification=new Notification();3:设置Notification的各种属性:/设置通知在状态栏显示的图标m_Notification.icon=R.drawable.icon; /当我们点击通知时显示的内容m_Notification.tickerText=Button1 通知内容.; 通知时发出的默认声音m_Notification.defaults=Notification.DEFAULT_SOUND;/设置通知显示的参数In

3、tent m_Intent=new Intent(NotificationDemo.this,DesActivity.class); PendingIntent m_PendingIntent=PendingIntent.getActivity(NotificationDemo.this, 0, m_Intent, 0);m_Notification.setLatestEventInfo(NotificationDemo.this, Button1, Button1通知,m_PendingIntent );/这个可以理解为开始执行这个通知m_NotificationManager.notify

4、(0,m_Notification);4:既然可以增加同样我们也可以删除。当然是只是删除你自己增加的。m_NotificationManager.cancel(0); 这里的0是一个ID号码,和notify第一个参数0一样。这也就完成了,添加删除工作。这里我们还是一个Demo来掩饰我们的操作。1:新建一个工程NotificationDemo。2:添加一个Activity:DesActivity,注意需要在Manifest.xml中声明3:NotificationDemo中的Laytout文件很简单就是定义一个Button.其代码文件如下:1. package com.rocky.studio.

5、ch4221;2. import android.app.Activity;3. import android.app.Notification;4. import android.app.NotificationManager;5. import android.app.PendingIntent;6. import android.content.Intent;7. import android.os.Bundle;8. import android.view.View;9. import android.widget.Button;10. import android.widget.Te

6、xtView;11. public class NotificationDemo extends Activity 12.13. Button m_Button1;14. TextView m_txtView;15.16. NotificationManager m_NotificationManager;17. Notification m_Notification;18.19. Intent m_Intent;20. PendingIntent m_PendingIntent;21. 22. /* Called when the activity is first created. */2

7、3. Override24. public void onCreate(Bundle savedInstanceState) 25. super.onCreate(savedInstanceState);26. setContentView(R.layout.main);27. 28. m_NotificationManager=(NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);29. 30. 31. m_Button1=(Button)this.findViewById(R.id.Button01);32. 33

8、. 34. /点击通知时转移内容35. m_Intent=new Intent(NotificationDemo.this,DesActivity.class);36. 37. m_PendingIntent=PendingIntent.getActivity(NotificationDemo.this, 0, m_Intent, 0);38. 39. m_Notification=new Notification();40. 41. m_Button1.setOnClickListener(new Button.OnClickListener()42. public void onClick

9、(View v) 43. / TODO Auto-generated method stub44. 45. /设置通知在状态栏显示的图标46. m_Notification.icon=R.drawable.icon;47. 48. /当我们点击通知时显示的内容49. m_Notification.tickerText=Button1 通知内容.;50. 51. /通知时发出的默认声音52. m_Notification.defaults=Notification.DEFAULT_SOUND;53. 54. /设置通知显示的参数55. m_Notification.setLatestEventI

10、nfo(NotificationDemo.this, Button1, Button1通知,m_PendingIntent );56. 57. /这个可以理解为开始执行这个通知58. m_NotificationManager.notify(0,m_Notification);59. 60. );61. 62. 63. 64. 65. 复制代码4:修改DesActivity 的源文件,代码如下:它做的事情就是取消之前添加的Notification1. package com.rocky.studio.ch4221;2. import android.app.Activity;3. import

11、 android.app.NotificationManager;4. import android.os.Bundle;5. public class DesActivity extends Activity 6.7. NotificationManager m_NotificationManager;8.9. Override10. protected void onCreate(Bundle savedInstanceState) 11. / TODO Auto-generated method stub12. super.onCreate(savedInstanceState);13.

12、 this.setContentView(R.layout.main2);14. 15. /启动后删除之前我们定义的16. m_NotificationManager=(NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);17. m_NotificationManager.cancel(0); 18. 19.20. 复制代码代码也很简单。可以查看Notification , NotificationMananger 这两个类来学习前后左右。下面是一篇文章,对Notification ,NotificationManag

13、er这两个类有详细的说明介绍,特借鉴一下。NoticificationManager很容易可以放在状态栏,也很容易实现从statusbar进入程序 中,NoticificationManager中通过intent执行此程序的activity就可以了NoticificationManager状态栏操作NotificationManager(通知管理器):NotificationManager负责通知用户事件的发生.NotificationManager有三个公共方法:1. cancel(int id) 取消以前显示的一个通知.假如是一个短暂的通知,试图将隐藏,假如是一个持久的通知,将从状态条中移

14、走.2. cancelAll() 取消以前显示的所有通知.3. notify(int id,Notification notification) 把通知持久的发送到状态条上./初始化NotificationManager:NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);Notification代表着一个通知.Notification的属性:audioStreamType 当声音响起时,所用的音频流的类型contentIntent 当通知条目被点击,就执行这个被设置的Inte

15、nt.contentView 当通知被显示在状态条上的时候,同时这个被设置的视图被显示.defaults 指定哪个值要被设置成默认的.deleteIntent 当用户点击Clear All Notifications按钮区删除所有的通知的时候,这个被设置的Intent被执行.icon 状态条所用的图片.iconLevel 假如状态条的图片有几个级别,就设置这里.ledARGB LED灯的颜色.ledOffMS LED关闭时的闪光时间(以毫秒计算)ledOnMS LED开始时的闪光时间(以毫秒计算)number 这个通知代表事件的号码sound 通知的声音tickerText 通知被显示在状态条

16、时,所显示的信息vibrate 振动模式.when 通知的时间戳.将Notification发送到状态条上:Notification notification = new Notification();Notification的设置过程.nm.notify(0, notification); /发送到状态条上创建和触发Notification创建和配置新的Notification需要经历三步。 首先,你要创建一个新的Notification对象,传入要在状态条上显示的图 标、文字和Notification的 当前时间,如下面的代码片段所示: / Choose a drawable to dis

17、play as the status bar iconint icon = R.drawable.icon; / Text to display in the status bar when the notification is launchedString tickerText = “Notification”; / The extended status bar orders notification in time orderlong when = System.currentTimeMillis();Notification notification = new Notificati

18、on(icon, tickerText, when); 当Notification触发时,文本将沿着状态条进行滚动 显示。其次,使用setLatestEventInfo方法来配置Notification在扩展的状态窗口中的外观。扩展的状态窗口将显示图标和在构造函数中传入的时间,以及显示标题和一个详细的字符串。Notification一般表示为对一个动作的请求或引起用户的注意,所以,当用户点击Notification项目时你可以指定一个PendingIntent来触发。 下面的代码片段使用了setLastestEventInfo来设置这些值: Context context = getAppli

19、cationContext(); / Text to display in the extended status windowString expandedText = “Extended status text”; / Title for the expanded statusString expandedTitle = “Notification Title”; / Intent to launch an activity when the extended text is clickedIntent intent = new Intent(this, MyActivity.class)

20、;PendingIntent launchIntent = PendingIntent.getActivity(context, 0, intent, 0);notification.setLatestEventInfo(context,expandedTitle,expandedText,launchIntent); 一个好的形式是显示相同事件(例如,接 收多个SMS消息)的多个对象时 使用一个Notification图 标。为了呈现给用户,使用setLastestEventInfo更新数据集来呈现最近的消息以及重新触发Notification来更新它的值。 你还可以使用number属性来显

21、示一个状态条图标所表示的事件数目。 设置为比1大的数,如下所示,将在状态条图标上以一个小小的数字进行 显示: notification.number+; 任何对Notification的变更,你都需要重新触发来进行更 新。如果要删除这个数字,设置number的值为0或者-1。 最后,你可以对Notification对象使用多种属性来增强Notification的效果,如闪烁LED、震动电话和播放音乐文件。这些高级特征将在本章的后面部分进行详细描述。 触发Notification 为了触发一个Notification,使用NotificationManager的notify方法,将一个整数的ID

22、和Notification对象传入,如下的片段所示: int notificationRef = 1;notificationManager.notify(notificationRef, notification); 为了更新一个已经触发过的Notification,传入相同的ID。你既可以传入相同的Notification对象,也可以是一个全新的对象。只 要ID相同,新的Notification对象会替换状态条图标和扩展的状态窗口的细节。 你还可以使用ID来取消Notification,通过调用NotificationManager的cancel方法,如下所示: notificationM

23、anager.cancel(notificationRef); 取消一个Notification时,将移除它的状态条图标以及清除 在扩展的状态窗口中的信息。Notification和NotificationManager的基本使用方法1. NotificationManager和Notification用来设置通知。通知的设置等操作相对比较简单,基本的使用方式就是用新建一个Notification对象,然后设置好通知的各项参数,然后使用系统后台运行的 NotificationManager服务将通知发出来。基本步骤如下:1)得到NotificationManager:String ns = C

24、ontext.NOTIFICATION_SERVICE;NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);2)创建一个新的Notification对象:Notification notification = new Notification();notification.icon = R.drawable.notification_icon;也可以使用稍微复杂一些的方式创建Notification:int icon = R.drawable.notification_ico

25、n; /通知图标CharSequence tickerText = Hello;/状态栏(Status Bar)显示的通知文本提示long when = System.currentTimeMillis(); /通知产生的时间,会在通知信息里显示Notification notification = new Notification(icon, tickerText, when);3)填充Notification的各个属性:Context context = getApplicationContext();CharSequence contentTitle = My notification;CharSequence contentText = Hello World!;Intent notificationIntent = new Intent(this, MyClass.class);PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);notification.setLatestEventInfo(context

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论