Android中Notification详解【android进化三十五】

    • 下面来谈谈notification,这个notification一般用在电话,短信,邮件,闹钟铃声,在手机的状态栏上就会出现一个小图标,提示用户处理这个快讯,这时手从上方滑动状态栏就可以展开并处理这个快讯。发现这个功能特别好用,所以我就根据我的理解来谈谈。摘自帮助文档 : notification类表示一个持久通知将提交给用户使用NotificationManager。已添加Notification.Builder,使其更容易构建通知。notification是一种让你的应用程序在没有开启情况下或在后台运行警示用户。它是看不见的程序组件(Broadcast Receiver,Service和不活跃的Activity)警示用户有需要注意的事件发生的最好途径。

    先来区分以下状态栏状态条的区别:

    1、状态条就是手机屏幕最上方的一个条形状的区域;

    在状态条有好多信息量:比如usb连接图标,手机信号图标,电池电量图标,时间图标等等;

    2、状态栏就是手从状态条滑下来的可以伸缩的view;

    在状态栏中一般有两类(使用FLAG_标记):

    (1)正在进行的程序;

    (2)是通知事件;

    大概来描述创建一个Notification传送的信息有:

    1、一个状态条图标;

    2在拉伸的状态栏窗口中显示带有大标题,小标题,图标的信息,并且有处理该点击事件:比如调用该程序的入口类;

    3、闪光,LED,或者震动;

    快速创建一个Notification的步骤简单可以分为以下四步:

    第一步:通过getSystemService()方法得到NotificationManager对象;

    第二步:对Notification的一些属性进行设置比如:内容,图标,标题,相应notification的动作进行处理等等;

    第三步:通过NotificationManager对象的notify()方法来执行一个notification的快讯;

    第四步:通过NotificationManager对象的cancel()方法来取消一个notificatioin的快讯;

    下面对Notification类中的一些常量,字段,方法简单介绍一下:

    常量:

    DEFAULT_ALL 使用所有默认值,比如声音,震动,闪屏等等

    DEFAULT_LIGHTS 使用默认闪光提示

    DEFAULT_SOUNDS 使用默认提示声音

    DEFAULT_VIBRATE使用默认手机震动

    说明】:加入手机震动,一定要在manifest.xml中加入权限

    <uses-permission android:name="android.permission.VIBRATE" />

    以上的效果常量可以叠加,即通过

    mNotifaction.defaults =DEFAULT_SOUND| DEFAULT_VIBRATE;

    或mNotifaction.defaults |=DEFAULT_SOUND (最好在真机上测试,震动效果模拟器上没有)

    //设置flag位

    FLAG_AUTO_CANCEL该通知能被状态栏的清除按钮给清除掉

    FLAG_NO_CLEAR该通知能被状态栏的清除按钮给清除掉

    FLAG_ONGOING_EVENT通知放置在正在运行

    FLAG_INSISTENT是否一直进行,比如音乐一直播放,知道用户响应

    常用字段:

    contentIntent 设置PendingIntent对象,点击时发送该Intent

    defaults 添加默认效果

    flags设置flag位,例如FLAG_NO_CLEAR等

    icon设置图标

    sound设置声音

    tickerText显示在状态栏中的文字

    when 发送此通知的时间戳

    Notification.build构造Notification方法介绍:

    void setLatestEventInfo(Context context , CharSequencecontentTitle,CharSequencecontentText,PendingIntent contentIntent)

    功能: 显示在拉伸状态栏中的Notification属性,点击后将发送PendingIntent对象

    参数: context上下文环境

    contentTitle 状态栏中的大标题

    contentText 状态栏中的小标题

    contentIntent 点击后将发送PendingIntent对象

    说明:要是在Notification中加入图标,在状态栏和状态条中显示图标一定要用这个方法,否则报错!

    最后说一下NotificationManager类的常用方法:

    通过获取系统服务来获取该对象:

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

    NotificationManager常用方法介绍:

    public void cancelAll() 移除所有通知(只是针对当前Context下的Notification)

    public void cancel(int id) 移除标记为id的通知 (只是针对当前Context下的所有Notification)

    public void notify(String tag ,int id, Notification notification)将通知加入状态栏, 标签为tag,标记为id

    public void notify(int id, Notification notification)将通知加入状态栏,,标记为id

    下面看一下demo的效果图:

    Android中Notification详解【android进化三十五】Android中Notification详解【android进化三十五】

    图(1) 图(2)

    Android中Notification详解【android进化三十五】Android中Notification详解【android进化三十五】

    图(3) 图(4)

    Android中Notification详解【android进化三十五】

    图(5)

    源码奉上:

    在NotificationApp工程里面:

    一、在com.cn.notification.daming包下面NotificationMainActivity.java中的代码:

    二、在com.cn.notification.daming包下面ToNotificationActivity.java中的代码:

    三、在layout下main.xml布局文件的代码

    四、在layout下main1.xml布局文件的代码

    五、manifest.xml中的代码:

你可能感兴趣的:(notification)