全面解析Notification

article/2025/9/11 21:44:51

Notification在Android中使用的频率可以说是非常高的,本篇博客,我将围绕着Notification的各方面进行解析,使大家对Notification有更好的认识。

Notification的使用步骤

1.获取NotificationManager

NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);  

2.创建NotificationCompat.Builder

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);  

3.对Builder设置一些Notification相关属性:

mBuilder.setContentTitle("标题")//设置通知栏标题  .setContentText("内容") //设置通知栏显示内容 .setContentIntent(getDefalutIntent(Notification.FLAG_AUTO_CANCEL)) //设置通知栏点击意图  
//  .setNumber(number) //设置通知集合的数量  .setTicker("通知到来") //通知首次出现在通知栏,带上升动画效果的  .setWhen(System.currentTimeMillis())//通知产生的时间,会在通知信息里显示,一般是系统获取到的时间  .setPriority(Notification.PRIORITY_DEFAULT) //设置该通知优先级  
//  .setAutoCancel(true)//设置这个标志当用户单击面板就可以让通知将自动取消    .setOngoing(false)//ture,设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)  .setDefaults(Notification.DEFAULT_VIBRATE)//向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合  //Notification.DEFAULT_ALL  Notification.DEFAULT_SOUND 添加声音 // requires VIBRATE permission  .setSmallIcon(R.drawable.ic_launcher);//设置通知小ICON  

4.使用Builder创建通知

Notification notification = mBuilder.build();

5.使用NotificationManager将通知推送出去

int id = 199;
LogUtils.d(TAG, "创建通知");
mNotificationManager.notify(id, notification);

Notification重要方法解析

Notification 的基本操作主要有创建、更新、取消这三种。一个 Notification 的必要属性有三项,如果不设置则在运行时会抛出异常:

  1. 小图标,通过 setSmallIcon() 方法设置
  2. 标题,通过 setContentTitle() 方法设置
  3. 内容,通过 setContentText() 方法设置

除了以上三项,其它均为可选项。虽然如此,但还是应该给 Notification 设置一个 Action ,这样就可以直接跳转到 App 的某个 Activity 、启动一个 Service 或者发送一个 Broadcast。否则,Notification 仅仅只能起到通知的效果,而不能与用户交互。
当系统接收到通知时,可以通过震动、响铃、呼吸灯等多种方式进行提醒。

1) setSmallIcon() 与 setLargeIcon()
在 NotificationCompat.Builder 中有设置通知的大小图标的两个方法。这两个方法有什么区别呢?当 setSmallIcon() 与 setLargeIcon() 同时存在时, smallIcon 显示在largeIcon的右下角;当只设置 setSmallIcon() 时, smallIcon 显示在左侧。看下图你就明白了。对于部分 ROM ,可能修改过源码,如 MIUI 上通知的大图标和小图标是没有区别的。
这里写图片描述
Google 官方是这么解释 setSmallIcon() 这个方法的:

Set the small icon resource, which will be used to represent the notification in the status bar. The platform template for the expanded view will draw this icon in the left, unless a large icon has also been specified, in which case the small icon will be moved to the right-hand side.

2) 设置提醒标志符Flags
方法解释:提醒标志符,向通知添加声音、闪灯和振动效果等设置达到通知提醒效果,可以组合多个属性
a) 创建通知栏之后通过给他添加.flags属性赋值。

1.	Notification notification = mBuilder.build();  
2.	notification.flags = Notification.FLAG_AUTO_CANCEL; 
b)	通过setContentIntent(PendingIntent intent)方法中的意图设置对应的flags
1.	public PendingIntent getDefalutIntent(int flags){  
2.	    PendingIntent pendingIntent= PendingIntent.getActivity(this, 1, new Intent(), flags);  
3.	    return pendingIntent;  
4.	}  

各标志符介绍

Notification.FLAG_SHOW_LIGHTS              //三色灯提醒,在使用三色灯提醒时候必须加该标志符
Notification.FLAG_ONGOING_EVENT          //发起正在运行事件(活动中)
Notification.FLAG_INSISTENT   //让声音、振动无限循环,直到用户响应 (取消或者打开)
Notification.FLAG_ONLY_ALERT_ONCE  //发起Notification后,铃声和震动均只执行一次
Notification.FLAG_AUTO_CANCEL      //用户单击通知后自动消失
Notification.FLAG_NO_CLEAR          //只有全部清除时,Notification才会清除 ,不清楚该通知(QQ的通知无法清除,就是用的这个)
Notification.FLAG_FOREGROUND_SERVICE    //表示正在运行的服务

3) .setDefaults(int defaults) (NotificationCompat.Builder中的方法,用于设置通知到来时,通过什么方式进行提示)

方法解释:向通知添加声音、闪灯和振动效果的最简单、使用默认(defaults)属性,可以组合多个属性(和方法1中提示效果一样的)
对应属性:
Notification.DEFAULT_VIBRATE //添加默认震动提醒 需要 VIBRATE permission

Notification.DEFAULT_SOUND // 添加默认声音提醒
Notification.DEFAULT_LIGHTS// 添加默认三色灯提醒
Notification.DEFAULT_ALL// 添加默认以上3种全部提醒

/**
* 显示带有默认铃声、震动、呼吸灯效果的通知
* 如需实现自定义效果,请参考后面三个例子
*/
private void showNotifyWithMixed() {NotificationCompat.Builder builder = new NotificationCompat.Builder(this).setSmallIcon(R.mipmap.ic_launcher).setContentTitle("我是有铃声+震动+呼吸灯效果的通知").setContentText("库里就是叼~")//等价于setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE);.setDefaults(Notification.DEFAULT_ALL);mManager.notify(5, builder.build());
}

4) setVibrate(long[] pattern)
方法解释:设置震动的时间

.setVibrate(new long[] {0,300,500,700});  

实现效果:延迟0ms,然后振动300ms,在延迟500ms,接着在振动700ms。
还有另外一种写法:

mBuilder.build().vibrate = new long[] {0,300,500,700};  

如果希望设置默认振动方式,设置了方法(2)中默认为DEFAULT_VIBRATE 即可。
例子:

/**
* 展示有震动效果的通知,需要在AndroidManifest.xml中申请震动权限
* <uses-permission android:name="android.permission.VIBRATE" />
* 补充:测试震动的时候,手机的模式一定要调成铃声+震动模式,否则你是感受不到震动的
*/
private void showNotifyWithVibrate() {//震动也有两种设置方法,与设置铃声一样,在此不再赘述long[] vibrate = new long[]{0, 500, 1000, 1500};NotificationCompat.Builder builder = new NotificationCompat.Builder(this).setSmallIcon(R.mipmap.ic_launcher).setContentTitle("我是伴有震动效果的通知").setContentText("颤抖吧,凡人~")//使用系统默认的震动参数,会与自定义的冲突//.s

http://chatgpt.dhexx.cn/article/BUxgqBsn.shtml

相关文章

Android Notification使用

Android 通知栏适配 前言正文一、Android中通知的变化1. Android 4.1&#xff0c;API 162. Android 4.4&#xff0c;API 19 和 203. Android 5.0&#xff0c;API 214. Android 7.0&#xff0c;API 245. Android 8.0&#xff0c;API 266. Android 12.0&#xff0c;API 31 二、创…

Android之Notification的多种用法

我们在用手机的时候&#xff0c;如果来了短信&#xff0c;而我们没有点击查看的话&#xff0c;是不是在手机的最上边的状态栏里有一个短信的小图标提示啊&#xff1f;你是不是也想实现这种功能呢&#xff1f;今天的Notification就是解决这个问题的。 我们也知道Android系统也是…

Android--通知之Notification

前言 之前一篇博客讲了Android下使用Toast的方式提示消息。这篇博客讲解一下在Android中使用Notification提示消息给用户&#xff0c;Notification是一种具有全局效果的通知&#xff0c;程序一般通过NotificationManager服务来发送Notification。在本篇博客中&#xff0c;将介绍…

Android通知Notification使用全解析,看这篇就够了

1、效果 2、简介 通知是 Android 在您的应用 UI 之外显示的消息&#xff0c;用于向用户提供提醒、来自其他人的通信或来自您的应用的其他及时信息。用户可以点击通知打开您的应用或直接从通知中执行操作。 2.1、展示 通知以不同的位置和格式向用户显示&#xff0c;例如状态栏…

php cacti,cacti搭建遇到的那些事

最近闲的无聊&#xff0c;亲手操刀了一把整个生产环境cacti的搭建&#xff0c;时间消耗了3-4天&#xff0c;这里主要感谢网友老李、不想扮演逃兵、jiam的指导和帮助。下面就说说我搭建这个遇到的一些棘手的问题吧&#xff01; 搭建完成的界面如下图&#xff1a; 系统环境&#…

cacti mysql_cacti监控mysql

1.MySQL stats模板 功能&#xff1a;用来监控MySQL状态&#xff0c;其中包括索引使用情况、查询、排序、锁定情况等。 1).将mysql_stats.php 和 dumpMemcachedStats.php脚本放到cacti脚本目录下(/usr/local/apache/htdocs/cacti/.s/)&#xff0c;导入模板时注意选择cacti_host_…

cacti mysql 详解,cacti详解和基本配置

cacti简介&#xff1a; cacti是用php语言实现的一个软件&#xff0c;它的主要功能是用snmp服务获取数据&#xff0c;然后用rrdtool存储和更新数据&#xff0c;当用户需要查看数据的时候就用rrdtool生成图表呈现给用户。snmp抓到的数据不是存储在mysql中&#xff0c;而是存在rrd…

cacti安装

1、搭建LNMP环境 http://blog.csdn.net/yang_xu_1987/article/details/77292340 #下面是按照源码搭建LNMP的方式&#xff0c;主要是路径不一样 2、安装rrd-tool、snmp相关包 yum install -y rrdtool net-snmp net-snmp-utils 3、安装cacti 下载cacti&#xff1a;http://down…

java cacti_开源的企业级监控系统 Cacti 简介

Cacti是一款网络流量监测图形分析工具&#xff0c;把LAMP的功能都结合起来&#xff0c;用于网络流量监控&#xff0c;操作起来非常方便&#xff01;让我们认识下Cacti简介及工作流程。 一、Cacti简介 1. cacti是用php语言实现的一个软件&#xff0c;它的主要功能是用snmp服务获…

安装cacti

1、搭建LAMP环境 yum -y install httpd mariadb mariadb-server mariadb-devel php php-mysql php-gd php-pear gd gd-devel systemctl start httpd && systemctl enable httpd systemctl start mariadb && systemctl enable mariadb 2、安装绘图工具和SNMP组…

Cacti安装及模板导入

文章目录 前言简介安装安装http以及php及php相关扩展安装数据库mariadb&#xff0c;配置yum源&#xff1a;安装snmp及其相关扩展&#xff08;注意版本号得一致&#xff09;安装绘图工具RRDTool绘图工具安装spine安装中文字体安装cacti初始化cacti 应用管理设备以及创建图形加入…

搭建cacti

1、搭建lamp环境 yum -y install httpd mariadb mariadb-server mariadb-devel php php-mysql php-gd php-pear gd gd-devel systemctl start httpd && systemctl enable httpd systemctl start mariadb && systemctl enable mariadb 2、安装绘图工具和snmp组件…

cacti php zombie,cacti 监控搭建

一、准备前工作 1.系统&#xff1a;centos 7.6 关闭seliunx及防火墙 关闭防火墙 systemctl disable firewalld.service #禁止firewall开机启动 关闭SELINUX setenforce 0 或 vim /etc/selinux/config 修改 SELINUXenforcing 改成 SELINUXdisabled 3.更新yum源 这个不再叙述 4.安…

java cacti_cacti监控安装

cacti是用PHP实现的一个软件&#xff0c;它用snmp服务获取数据&#xff0c;然后用rrdtool存储和更新数据&#xff0c;并生成图表展示。比较适合用于交换机、路由器的网络监控&#xff0c;插件众多&#xff0c;可图示化显示网络状况。 cacti官方推荐版本如下&#xff1a; PHP 5.…

mysql cacti_使用Cacti监控MySQL

本文将概述一些自己在使用中的问题(并不会给出step by step的使用介绍)&#xff0c;以供参考&#xff0c;详细信息请留言。 既然别人的轮子已经很好用了&#xff0c;我自己就不发明了。使用Cacti可以较为快速搭建一个MySQL性能监控平台&#xff1a; Cacti是一个用于监控网络流量…

linux cacti 搭建,Cacti搭建部署

一、搭建lamp或者lnmp环境。 1、推荐使用:http://lnmp.org/一键安装lamp环境即可。 2、修改php配置:#vim /usr/local/php/etc/php.ini 取消305行注释 二、配置cacti#cd /usr/local/src #wget http://www.cacti.net/downloads/cacti-0.8.8h.tar.gz #tar zxvf cacti-0.8.8h.tar…

cacti监控

cacti监控 一、 使用RPM包配置LANP 1、 安装并配置apache、mariadb 1&#xff09; 安装apache和mariadb数据库 [rootcentos01 ~]# rm -rf /etc/yum.repos.d/CentOS-* [rootcentos01 ~]# mount /dev/cdrom /mnt/ mount: /dev/sr0 写保护&#xff0c;将以只读方式挂载 [rootcent…

cacti

cacti 题目一、安装 cacti二、访问Cacti Web界面三、客户端配置SNMP1.安装SNMP2.编辑配置文件四、在服务器添加监听SNMP提示:如果需要全套视频以及笔记请私信我,视频可能需要额外收点费用。 题目 Cacti 安装 cacti; 在 storagesrv 上配置 snmp,用于监控服务器接口流量情况…

Linux 监控工具之Cacti使用详解(一)

大纲 一、前言 二、Cacti 概述 三、Cacti 工作流程 四、Cacti 安装 五、配置Cacti监控本机 注,操作系统 CentOS 6.4 x86_84,软件版本 Cacti-0.8.8b 目前最新版。 (说明:本博文的一些图片自于开源社区与官方网站并不是所有内容全是原创) 一、前言 在前面的几篇博客中我们讲…

cacti安装与配置

目录 一&#xff0c;cacti介绍 1.什么是Cacti? 2.什么是SNMP&#xff1f; 3.什么是RRDtools&#xff1f; 二&#xff0c;cacti安装 三&#xff0c;添加监控项 1.编写脚本&#xff0c;以下添加的为监控tcp的连接数 2.在cacti图像化窗口中定义监控项 3.重新编辑脚本&am…