`

Android Notification通知详解

 
阅读更多

转于:http://www.cnblogs.com/linjiqin/archive/2011/12/14/2288074.html

 

------------------------------------------------------------------------------------------------------------

 

根据activity的生命周期,在activity不显示时,会执行onStop函数(比如按下home键),所以你在onStop函数(按退出键除外)里面把notification放在通知栏里,再此显示时,把notification从通知栏里去掉。或者,只要程序在运行就一直显示通知栏图标。

        

下面对Notification类中的一些常量,字段,方法简单介绍一下:
常量:
DEFAULT_ALL    使用所有默认值,比如声音,震动,闪屏等等
DEFAULT_LIGHTS 使用默认闪光提示
DEFAULT_SOUNDS 使用默认提示声音
DEFAULT_VIBRATE 使用默认手机震动 
【说明】:加入手机震动,一定要在manifest.xml中加入权限:
<uses-permission android:name="android.permission.VIBRATE" />
以上的效果常量可以叠加,即通过
notification.defaults =DEFAULT_SOUND|DEFAULT_VIBRATE;  
notification.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 发送此通知的时间戳

                

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

             

package com.ljq.activity;
 
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
 
public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        clearNotification();
    }
     
    @Override
    protected void onStop() {
        showNotification();
        super.onStop();
    }
     
    @Override
    protected void onStart() {
        clearNotification();
        super.onStart();
    }
     
    /**
     * 在状态栏显示通知
     */
    private void showNotification(){
        // 创建一个NotificationManager的引用  
        NotificationManager notificationManager = (NotificationManager)   
            this.getSystemService(android.content.Context.NOTIFICATION_SERVICE);  
         
        // 定义Notification的各种属性  
        Notification notification =new Notification(R.drawable.icon,  
                "督导系统", System.currentTimeMillis());
        //FLAG_AUTO_CANCEL   该通知能被状态栏的清除按钮给清除掉
        //FLAG_NO_CLEAR      该通知不能被状态栏的清除按钮给清除掉
        //FLAG_ONGOING_EVENT 通知放置在正在运行
        //FLAG_INSISTENT     是否一直进行,比如音乐一直播放,知道用户响应
        notification.flags |= Notification.FLAG_ONGOING_EVENT; // 将此通知放到通知栏的"Ongoing"即"正在运行"组中  
        notification.flags |= Notification.FLAG_NO_CLEAR; // 表明在点击了通知栏中的"清除通知"后,此通知不清除,经常与FLAG_ONGOING_EVENT一起使用  
        notification.flags |= Notification.FLAG_SHOW_LIGHTS;  
        //DEFAULT_ALL     使用所有默认值,比如声音,震动,闪屏等等
        //DEFAULT_LIGHTS  使用默认闪光提示
        //DEFAULT_SOUNDS  使用默认提示声音
        //DEFAULT_VIBRATE 使用默认手机震动,需加上<uses-permission android:name="android.permission.VIBRATE" />权限
        notification.defaults = Notification.DEFAULT_LIGHTS;
        //叠加效果常量
        //notification.defaults=Notification.DEFAULT_LIGHTS|Notification.DEFAULT_SOUND;
        notification.ledARGB = Color.BLUE;  
        notification.ledOnMS =5000; //闪光时间,毫秒
         
        // 设置通知的事件消息  
        CharSequence contentTitle ="督导系统标题"; // 通知栏标题  
        CharSequence contentText ="督导系统内容"; // 通知栏内容  
        Intent notificationIntent =new Intent(MainActivity.this, MainActivity.class); // 点击该通知后要跳转的Activity  
        PendingIntent contentItent = PendingIntent.getActivity(this, 0, notificationIntent, 0);  
        notification.setLatestEventInfo(this, contentTitle, contentText, contentItent);  
         
        // 把Notification传递给NotificationManager  
        notificationManager.notify(0, notification);  
    }
    //删除通知   
    private void clearNotification(){
        // 启动后删除之前我们定义的通知  
        NotificationManager notificationManager = (NotificationManager) this 
                .getSystemService(NOTIFICATION_SERVICE);  
        notificationManager.cancel(0); 
 
    }
}
分享到:
评论

相关推荐

    android 通知Notification详解及实例代码

    主要介绍了android 通知Notification详解及实例代码的相关资料,需要的朋友可以参考下

    Android开发之Notification通知用法详解

    本文实例讲述了Android开发之Notification通知用法。分享给大家供大家参考,具体如下: 根据activity的生命周期,在activity不显示时,会执行onStop函数(比如按下home键),所以你在onStop函数(按退出键除外)里面把...

    Android中Notification通知用法详解

    主要为大家详细介绍了Android中Notification通知用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Notification使用详解之一:基础应用

    在消息通知时,我们经常用到...当有消息通知时,状态栏会显示通知的图标和文字,通过下拉状态栏,就可以看到通知信息了,Android这一创新性的UI组件赢得了用户的一致好评,就连苹果也开始模仿了。

    详解Android中Notification通知提醒

    当有消息通知时,状态栏会显示通知的图标和文字,通过下拉状态栏,就可以看到通知信息了,Android这一创新性的UI组件赢得了用户的一 致好评,就连苹果也开始模仿了。今天我们就结合实例,探讨一下Notification具体的...

    Android音乐播放器项目(含Widget小挂件、Notification通知栏)

    Android音乐播放器项目(含Widget小挂件、Notification通知栏)代码详解博客:https://blog.csdn.net/jal517486222/article/details/88994863

    Android 5.X 新特性详解(五)——Notification

    Google在Android 5.0 上又进一步改进了通知栏,优化了Notification。当长按Notification的时候,会显示消息来源。Notification会有一个从...同时,在Android 5.X 设备上,锁屏状态下我们也可以看见Notification通知了。

    Android编程开发之NotiFication用法详解

    本文实例讲述了Android编程开发之NotiFication用法。分享给大家供大家参考,具体如下: notification就是通知的意思,安卓中指通知栏,一般用在电话,短信,邮件,闹钟铃声,在手机的状态栏上就会出现一个小图标,...

    Android开发 — 状态栏通知Notification、NotificationManager详解

    在Android系统中,发一个状态栏通知还是很方便的。下面我们就来看一下,怎么发送状态栏通知,状态栏通知又有哪些参数可以设置? 首先,发送一个状态栏通知必须用到两个类: NotificationManager 、 Notification。 ...

    详解Android中使用Notification实现进度通知栏(示例三)

    主要介绍了详解Android中使用Notification实现进度通知栏(示例三),具有一定的参考价值,有兴趣的可以了解一下。

    详解Android中Notification的使用方法

    在消息通知的时候,我们经常用到两个控件Notification和Toast。特别是重要的和需要长时间显示的信息,用Notification最合适不过了。他可以在顶部显示一个图标以标示有了新的通知,当我们拉下通知栏的时候,可以看到...

    Android 监听Notification 被清除实例代码

    本文主要介绍Android 监听Notification 事件,这里给大家提供实例代码进行参考,有需要的小伙伴可以参考下

    Android开发 -- 状态栏通知Notification、NotificationManager详解

    本文主要讲解状态栏通知Notification、NotificationManager,小编觉得非常详细,给大家一个参考,希望对大家学习有所帮助。

    Android典型技术模块开发详解

    8.11 Notification(通知) 8.11.1 一般的Notification 8.11.2 带进度的Notification 8.12 Toast(提示) 8.13 本章小结 第9章 风格与动画 9.1 主题与风格 9.1.1 风格style 9.1.2 主题Theme 9.2 View的绘制 9.3 ...

    Android 8.0系统中通知栏的适配详解

    大家好,今天我们继续来学习Android 8.0系统的适配。 之前我们已经讲到了,Android 8.0系统最主要需要进行适配的...关于5.0系统需要对通知栏进行适配的内容,我也整理了一篇文章,感兴趣的朋友可以去阅读 Android通知

Global site tag (gtag.js) - Google Analytics