1.获取NotificationManager的实例

调用Context的getSystemService()方法获取,getSystemService()方法接收一个字符串参数用于确定获取系统那一个服务,这里是Context.NOTIFICATION_SERVICE。

NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATON_SERVICE);

2.创建Notification对象

创建Notification对象需要使用Builder构造器,但是几乎每个版本都会对Notification进行或多或少的修改,导致API不稳定,所以使用NotificationCompat类的构造器创建Notification对象。(NotificationCompat已被放弃使用)

Notification notification = new NotificationCompat.Builder(context).build();

注:在最终build之前可以连缀任意多的方法创建Notification对象,以下是一些基本的方法:

    Notification notification = new NotificationCompat.Builder(context).setContentTitle(“123”).setContentText(“123”).setWhen(System.currentTimeMills()).setSmallIcon(R.drawable.small_icon).setLargeIcon(BitmapFactory.decodeResource(getResource(),R.drawable.large_icon)).build();

setContentTitle():指定通知栏内容的标题;

setContentText():指定通知栏内容;

setWhen():指定被创建的时间(毫秒为单位);

setSmallIcon():设置通知的小图标;

setLargeIcon():设置通知的大图标

进阶方法:

setSound():接收一个uri参数,设置通知铃声。

.setSound(Uri.fromFile(new File(“/system/media/audio/ringtones/Luna.ogg”)))

setVibrate():接收一个长整型的数组,用于设置手机静止和震动的时长,以毫秒为单位。下标为0的值表示手机静止的时长,下标为1的值表示手机震动的时长,下标为2的值又表示手机手机静止的时长,依次类推。此方法需要添加权限“android.permission.VIBRATE”

.setVibrate(new long[]{0,1000,1000,1000})

setLights():控制手机的LED灯,接收3个参数,第一个参数用于指定LED灯的颜色,第二个参数用于指定LED灯亮起的时长,以毫秒为单位,第三个参数用于指定LED灯暗去的时长,也是可以以毫秒为单位。

.setLights(Color.GREEN,1000,1000)

setDefault():设置默认效果,铃声,震动

.setDefault(NotificationCompat.DEFAULT_ALL)

高级方法:

setStyle():富文本信息,如长段文字.setStyle(new NotificationCompat.BigTextStyle().bigText(“………………”)),显示一张大图

.setStyle(new NotificationCompat.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(getResources(),R.drawable.big_image)))

setPriority():设置通知的重要程度。接收一个整型参数用于这条通知的重要程度,一共有5个常量值可选:PRIORITY_DEFAULT表示默认的重要程度,和不设置效果是一样的;PRIORITY_MIN表示最低的重要程度,系统可能只会在特定场景才会显示这条通知,比如用于下拉状态栏的时候;PRIORITY_LOW表示较低的重要程度,系统可能会将这类通知缩小,改变其显示的顺序,将其排在更重要的通知之后;PRIORITY_HIGH表示较高的重要程度,系统可能会将这类通知放大,改变其显示的顺序,将其排在比较靠前的位置;PRIORITY_MAX表示最高的重要程度,这类通知必须要让用户立即看到甚至需要用户做出响应操作。

.setPriority(NotificationCompat.PRIORITY_MAX)

3.显示Notification

显示Notification使用NotificationManager类的方法notify(),此方法接收两个参数,第一个参数是id,需要保证每个通知指定的id都是不同的,第二个参数是Notification对象。

manager.notify(1,notification);

4.PendingIntent

PendingIntent和Intent的区别:Intent倾向于立即执行某个意图,PendingIntent倾向于在某个合适的时间执行意图。

获取PendingIntent示例,使用PendingIntent的静态方法获取,根据需要选择getActivity(),getService(),getBroadcast()。这几个方法接收的参数都是相同的,第一个参数Context;第二个参数一般情况用不到,传入0即可;第三个参数是一个Intent对象,通过这个对象构建出PendingIntent的“意图”;第四个参数用于确定PendingIntent的行为,有FLAG_ONE_SHOT,FLAG_NO_CREATE,FLAG_CANCEL_CURRENT和FLAG_UPDATE_CURRENT这四种值可选,通常情况下这个参数传入0。

在NotificationCompat.Builder后面连缀setContentIntent()方法添加PandingIntent对象。

5.点击通知取消

在没有使用setContentIntent()方法的时候,点击通知没有任何反应(此处有点击事件,只是没有相应的动作)。当点击通知后,通知不会消失,会一直显示在状态上。解决方法有两种:一种是在NotificationCompat.Builder后连缀setAutoCancel()方法,一种是显示调用NotificationManager的cancel()方法(需要在执行意图后的Activity或者service中使用NotificationManager调用,传入参数为Notification的id)。

发现错误请指出,谢谢!

有问题欢迎私聊或者发送邮箱(964427082@qq.com)一起讨论

Android NotificationManager详解相关推荐

  1. Android Notification 详解——基本操作

    Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...

  2. 【转】Android菜单详解——理解android中的Menu--不错

    原文网址:http://www.cnblogs.com/qingblog/archive/2012/06/08/2541709.html 前言 今天看了pro android 3中menu这一章,对A ...

  3. Android菜单详解——理解android中的Menu

    前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...

  4. Android LayoutInflater详解

    Android LayoutInflater详解 在实际开发中LayoutInflater这个类还是非常有用的,它的作用类 似于findViewById().不同点是LayoutInflater是用来 ...

  5. android Fragments详解

    android Fragments详解一:概述 android Fragments详解二:创建Fragment 转载于:https://my.oschina.net/liangzhenghui/blo ...

  6. android WebView详解,常见漏洞详解和安全源码(下)

    上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑.  上篇:android WebView详解,常见漏洞详解和安全源码(上)  转载请注明出处:http ...

  7. android WebView详解,常见漏洞详解和安全源码(上)

    这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析.  由于博客内容长度,这次将分为上下两篇,上篇详解 WebView ...

  8. android子视图无菜单,Android 菜单详解

    Android中菜单分为三种,选项菜单(OptionMenu),上下文菜单(ContextMenu),子菜单(SubMenu) 选项菜单 可以通过两种办法增加选项菜单,一是在menu.xml中添加,该 ...

  9. Android StateFlow详解

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/121913352 本文出自[赵彦军的博客] 文章目录 系列文章 一.冷流还是热流 S ...

最新文章

  1. c4d+ps打造抽象NFT加密艺术 Create Abstract NFT Crypto Art with Cinema 4D + Photoshop
  2. Ubuntu11.10下载android4.0.1源码
  3. 【WPF】使用控件MediaElement播放视频
  4. 图数据库neo4j安装、neo4j使用
  5. 模仿u-boot的makefile结构
  6. 51单片机 驱动步进电机 C语言 lcd,51单片机红外遥控控制步进电机的LCD显示源程序...
  7. 移动大数据时代:无线网络的挑战与机遇
  8. Window 远程连接 Ubuntu 系统
  9. eclipse反编译class文件
  10. linux智能系统下载软件,NI Linux RT System Image 20.5 NI Linux实时系统映像2020.09
  11. 电脑主板线路连接图解_机箱线怎么接主板 DIY电脑机箱跳线与主板连接图解(2)...
  12. 增值税税控设备(计算机打印机)全额抵扣,一般纳税人税控专用设备和技术费用抵减税额会计处理...
  13. Amazon Alexa系列介绍(1)--综述
  14. 安装zephyr流程与问题解决
  15. 【老狼推荐】Instruments 用户指南
  16. Qt中 QPainter 刷新出现的问题
  17. minikube 安装 Kubernetes Dashboard 并集成 Heapster
  18. STM32的USB速度,终于确定了传输极限,为以后的产品设计提供了数据。
  19. 什么是POP3和SMTP?
  20. dz论坛开启图片压缩功能

热门文章

  1. 微信表情图像代表什么意思_电表型号怎么选 型号字母都代表什么意思
  2. 关于车辆和车牌的检测相关文章
  3. Tensorflow精进之路(二):两层卷积神经网络模型训练MNIST
  4. 图像变换——分段线性变换
  5. 关于jet db的连接字串,以及加密后的字串
  6. 交叉熵和mse_损失函数 - MSE
  7. 洛谷 P4001 [ICPC-Beijing 2006]狼抓兔子
  8. Lodop在页面获取打印机列表 选择打印机预览
  9. Javascript 学习笔记 - 函数 - 关于IIFE - 关于函数声明和函数表达式 - 个人总结
  10. 精确光源(Punctual Light Sources)