Android控件之Notification
Android通知就是让设备在屏幕最顶上那栏里面显示图标,当滑下通知栏之后可以看到列表状的通知选项,有些是“通知”类型的,有些是“正在运行”类型的,“通知”类型的通知是可以清除的,“正在运行”类型的通知是无法清除的,比如短信来了,顶上的状态栏就会出现通知,这么通知通常是可以被清除掉的,还比如听音乐的时候出现的通知,这么通知通常就不能清除的、正在运行的类型,具体如何定义这两种类型将会在后面的代码中给出。
参考这位朋友实例 感觉写着很轻便也很清晰。
转载自:https://www.juwends.com/tech/android/android-notification.html
/* * Copyright (C) 2013 Juwend's Demo * * 本代码可以任意复制与改动,欢迎转载,转载请注明出处 * * */package com.juwends.helper;import android.app.Activity;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Context;import android.content.Intent;import android.content.res.Resources;/** * 通知制造 * * @author Juwend * */public class NotificationHelper { // 1.实例化Notification类 // 2.设置Notification对象的icon,通知文字,声音 // 3.实例化PendingIntent类,作为控制点击通知后显示内容的对象 // 4.加载PendingIntent对象到Notification对象(设置 打开通知抽屉后的 标题/内容) // 5.获得 NotificationManager对象 // 6.使用NotificationManager对象显示通知 /** * 发布通知 * * @param c 上下文 * @param notifyId 通知标识id * @param iconResId 显示的icon的id * @param textResId 显示的文字的id * @param soundResId 声音 - 没有使用(可以自己加) * @param titleResId 打开通知抽屉后的标题的id * @param contentResId 打开通知抽屉后的内容的id * @param cls 点击后打开的类 * @param flag 通知标签 * @return 返回Notification对象 */ static public Notification notify(Context c, int notifyId, int iconResId, int textResId, int soundResId, int titleResId, int contentResId, Class<?> cls, int flag) { final Resources res = ((Activity) c).getResources(); return notify(c, notifyId, iconResId, res.getString(textResId), soundResId, res.getString(titleResId), res.getString(contentResId), cls, flag); } /** * 发布通知 * * @param c 上下文 * @param notifyId 通知标识id * @param iconResId 显示的icon的id * @param notifyShowText 显示的文字 * @param soundResId 声音 - 没有使用(可以自己加) * @param titleText 打开通知抽屉后的标题 * @param contentText 打开通知抽屉后的内容 * @param cls 点击后打开的类 * @param flag 通知标签 * @return 返回Notification对象 */ static public Notification notify(Context c, int notifyId, int iconResId, String notifyShowText, int soundResId, String titleText, String contentText, Class<?> cls, int flag) { Notification n = genNotification(c, notifyId, iconResId, notifyShowText, soundResId, titleText, contentText, cls, flag); // 显示通知 notify(c, notifyId, n); return n; } /** * 发布通知 * * @param c 上下文 * @param notifyId 通知标识id * @param n 通知对象 */ static public void notify(Context c, int notifyId, Notification n) { final NotificationManager nm = (NotificationManager) c .getSystemService(Context.NOTIFICATION_SERVICE); // 显示通知 nm.notify(notifyId, n); } /** * 生成Notification对象 * * @param c 上下文 * @param notifyId 通知标识id * @param iconResId 显示的icon的id * @param textResId 显示的文字的id * @param soundResId 声音 - 没有使用(可以自己加) * @param titleResId 打开通知抽屉后的标题的id * @param contentResId 打开通知抽屉后的内容的id * @param cls 点击后打开的类 * @param flag 通知标签 * @return 返回Notification对象 */ static public Notification genNotification(Context c, int notifyId, int iconResId, int textResId, int soundResId, int titleResId, int contentResId, Class<?> cls, int flag) { final Resources res = ((Activity) c).getResources(); return genNotification(c, notifyId, iconResId, res.getString(textResId), soundResId, res.getString(titleResId), res.getString(contentResId), cls, flag); } /** * 生成Notification对象 * * @param c 上下文 * @param notifyId 通知标识id * @param iconResId 显示的icon的id * @param notifyShowText 显示的文字 * @param soundResId 声音 - 没有使用(可以自己加) * @param titleText 打开通知抽屉后的标题 * @param contentText 打开通知抽屉后的内容 * @param cls 点击后打开的类 * @param flag 通知标签 * @return 返回Notification对象 */ static public Notification genNotification(Context c, int notifyId, int iconResId, String notifyShowText, int soundResId, String titleText, String contentText, Class<?> cls, int flag) { Intent intent = null; if (cls != null) intent = new Intent(c, cls); final Notification n = new Notification(); // 控制点击通知后显示内容的类 final PendingIntent ip = PendingIntent.getActivity(c,0, // requestCode 现在是没有使用的,所以任意值都可以 intent, 0 // PendingIntent的flag,在update这个通知的时候可以加特别的flag ); // 设置通知图标 n.icon = iconResId; // 通知文字 n.tickerText = notifyShowText; // 通知发出的标志设置 n.flags = flag; // 设置通知参数 n.setLatestEventInfo(c, titleText, contentText, ip); return n; } /** * 取消消息 * * @param c * @param notifyId * @return void */ public static void cancel(Context c, int notifyId) { ((NotificationManager) ((Activity) c) .getSystemService(Context.NOTIFICATION_SERVICE)) .cancel(notifyId); } // flags final static public int FLAG_ONGOING_EVENT_AUTO_CANCEL = Notification.FLAG_AUTO_CANCEL|Notification.FLAG_ONGOING_EVENT; final static public int FLAG_ONGOING_EVENT = Notification.FLAG_ONGOING_EVENT; final static public int FLAG_NO_CLEAR = Notification.FLAG_NO_CLEAR; final static public int FLAG_AUTO_CANCEL = Notification.FLAG_AUTO_CANCEL;}有了这段代码,仅仅只需要简单的方法调用,就可以很方便的生成通知了。如果想在点击通知开启某个Context(Activity或者其它)时传入数据,则只需要自行处理开启用的intent即可(最好是单独使用一个方法来做,这样便不会改变上面代码对外的接口定义)。如上可见,设置了FLAG_ONGOING_EVENT这个标志之后,这个通知是“正在运行”的;FLAG_AUTO_CANCEL这个标志则是表明点击了这个通知之后,就自行的从通知栏上清除掉。
最后一个参数表明对PendingIntent的标志位,这个标志位有时候也是很有用的,比如PendingIntent.FLAG_UPDATE_CURRENT就是声明对当前的PendingIntent(如果存在)的数据进行更新,如把intent更换了之类的,而不需要再去实例化新的对象。
Android控件之Notification的更多相关文章
- Android控件介绍
1. 介绍 Android控件大多位于android.widget, android.view.View为他们的父类对于Dialog系列, android.app.Dialog为父类 Android的 ...
- [Android Pro] android控件ListView顶部或者底部也显示分割线
reference to : http://blog.csdn.net/lovexieyuan520/article/details/50846569 在默认的Android控件ListView在 ...
- Android控件Gridview实现仿支付宝首页,Fragment底部按钮切换和登录圆形头像
此案例主要讲的是Android控件Gridview(九宫格)完美实现仿支付宝首页,包含添加和删除功能:Fragment底部按钮切换的效果,包含四个模块,登录页面圆形头像等,一个小项目的初始布局. 效果 ...
- Android 控件架构及View、ViewGroup的测量
附录:示例代码地址 控件在Android开发的过程中是必不可少的,无论是我们在使用系统控件还是自定义的控件.下面我们将讲解一下Android的控件架构,以及如何实现自定义控件. 1.Android控件 ...
- Android - 控件android:ems属性
Android - 控件android:ems属性http://blog.csdn.net/caroline_wendy/article/details/41684255?utm_source=tui ...
- Android 控件知识点,
一.Android控件具有visibility属性,可以取三个值:visible(默认值)可见,invisible(不可见,但仍然占据原有的位置和大小,可以看做是变得透明了),gone(空间不仅不可见 ...
- UIAutomator定位Android控件的方法
UIAutomator各种控件定位的方法. 1. 背景 使用SDK自带的NotePad应用,尝试去获得在NotesList那个Activity里的Menu Options上面的那个Add note菜单 ...
- 从Android系统出发,分析Android控件构架
从Android系统出发,分析Android控件构架 Android中所有的控件追溯到根源,就是View 和ViewGroup,相信这个大家都知道,但是大家也许会不太清楚它们之间的具体关系是什么,在A ...
- Android控件系列之RadioButton&RadioGroup(转)
学习目的: 1.掌握在Android中如何建立RadioGroup和RadioButton 2.掌握RadioGroup的常用属性 3.理解RadioButton和CheckBox的区别 4.掌握Ra ...
随机推荐
- [原创]MvvmLight中用IDialogService替代DialogMessage的用法
在新版的MvvmLight中,DialogMessage被标注为已过时,需要用IDialogService来替代,IDialogService的具体用法如下: 先在主窗体中实现IDialogServi ...
- C++开始前篇,深入编译链接(补充2)
在开始链接之前,我们先了解几个概念: 一>符号的概念. 我们知道,链接的最重要的是"对符号的重定位",而且上面提到了符号表,那什么是符号呢,在链接中,我们将函数和变量统称为符 ...
- 手把手教你玩转nginx负载均衡(二)----安装虚拟机操作系统
引言 在上一篇,我们组装好了虚拟机的硬件部分,那么现在我们就要把操作系统装上了,既然是服务器,那么安装linux操作系统是个比较好的选择,如果你喜欢的话,安装windows也是没有任何问题的 我这里选 ...
- 快速掌握、学习HTML的方法
链接 超级链接用<a>标签表示,href属性指定了链接到的地址.<a>标签可以包含文本,也可以包含图片. 点击查看效果 <a href="http://deer ...
- scp 从远程服务器上一下载文件
scp -P202 xx3.x6.xx.xx:/usr/local/zookeeper-.zip /tmp #指定远程服务器的端口和远程服务器的目标文件 ,最后指定要下载到本的地目录 也可以从远程服务 ...
- 把office文档转换为html过程中的一些坑
之前和我们项目的团队一起酝酿了一个项目,公司的业务文档技术文档比较多,但都比较分散,虽然通过FTP或其他方式聚合起来了,但感觉还是不够方便. 另外公司每次都来新员工,新员工都需要一些培训,比较耗时,比 ...
- Arduino uno LED灯实验
http://jingyan.baidu.com/article/a65957f4e358d924e67f9bad.html
- Web.xml配置参数详解
1 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文件的字符编码.DOCYTPE声明必须立即出现在此头之后.这个声明告诉服务器适用的 ...
- 【ajax 提交表单】多种方式的注意事项
在业务中,可能因为表单内容过于庞大,字段过于繁杂,如果人为去拼接的话 ,需要耗费大量的时间和精力,与此同时,代码看上去也是冗余不堪. 所以,提交表单的时候如果能整个表单数据整体提交,那是非常开心的事情 ...
- Windows - 性能监控之磁盘剩余空间大小警报
开始 -> 运行 -> 键入命令 perfmon.msc 数据收集器(Data Collector Sets) -> 用户自定义(User Defined)