Android开发手记(23) Notification
有时候,我们需要应用程序在状态内显示一些通知信息,这时我们就需要使用Notification来完成这一工作。也许我们会想到以前经常使用的Toast来通知用户。虽然Notification与Toast都可以起到通知、提醒的作用,其实这两者还是有很大不同的。在android中,Notification是通过NotificationManager进行统一管理的,而Toast使用Toast.makeToast即可显示。另外,Notification可以长久的显示在系统的状态栏内,但是Toast只能暂时显示一段时间。
现在我们开始讨论创建Notification的一般步骤。
首先,我们需要通过getSystemService方法获得一个NotificationManager对象。
NotificationManager nfManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
然后,要想显示一个Notification,我们还需一个PendingIntent,由于PendingIntent由android系统负责维护,可以防止在应用程序关闭的时候系统自动销毁Notification对象。
PendingIntent intent = PendingIntent.getActivity(MainActivity.this, 0, getIntent(), 0);
然后,通过Notification.Builder创建一个Notification对象。
Notification notification = new Notification.Builder(MainActivity.this).setSmallIcon(android.R.drawable.ic_dialog_email) // 设置Icon.setTicker("你有一封新邮件") // 设置接收时滚动通知.setContentTitle("邮件主题:这是第" + notiID + "封邮件")// 设置Title.setContentText("邮件内容:")// 设置Message.setContentIntent(intent) // 设置用于显示的Intent.setNumber(notiID) // 设置右下角Number.getNotification(); //API 11可以使用getNotificatin()// API 16及之后使用 build()
notification.flags = Notification.FLAG_AUTO_CANCEL; // 点击自动消失
最后,通过NotificationManager来显示Notification即可。
nfManager.notify(notiID++, notification); // notiID定义了通知的编号,notification为通知的内容
如果想销毁显示的Notification可以使用NotificationManager提供的方法。
nfManager.cancel(notiID); // 销毁编号为notiID的通知
nfManager.cancelAll(); // 销毁所有通知
完整代码如下:
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;public class MainActivity extends Activity {private NotificationManager nfManager;private Button btnNoti;private Button btnClear;private int notiID;@Overrideprotected void onCreate (Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);notiID = 1;nfManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);btnNoti = (Button)findViewById(R.id.brnNoti);btnNoti.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {PendingIntent intent = PendingIntent.getActivity(MainActivity.this, 0, getIntent(), 0);Notification notification = new Notification.Builder(MainActivity.this).setSmallIcon(android.R.drawable.ic_dialog_email) // 设置Icon.setTicker("你有一封新邮件") // 设置接收时滚动通知.setContentTitle("邮件主题:这是第" + notiID + "封邮件")// 设置Title.setContentText("邮件内容:")// 设置Message.setContentIntent(intent) // 设置用于显示的Intent.setNumber(notiID) // 设置右下角Number.getNotification(); //API 11可以使用getNotificatin()// API 16及之后使用 build()notification.flags = Notification.FLAG_AUTO_CANCEL; // 点击自动消失nfManager.notify(notiID++, notification);}});btnClear = (Button)findViewById(R.id.btnClear);btnClear.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {nfManager.cancel(notiID --);
// nfManager.cancelAll();}});}
}
转载于:https://www.cnblogs.com/doodle777/p/4943008.html
Android开发手记(23) Notification相关推荐
- ldflags android,Android 开发手记一 NDK编程实例
Android开发手记一 ---- NDK编程实例 在Android上,应用程序的开发,大部分基于Java语言来实现.要使用c或是c++的程序或库,就需要使用NDK来实现.NDK是Native Dev ...
- 使用Android开发工具23版更新Eclipse
本文翻译自:Update Eclipse with Android development tools v. 23 I updated Eclipse with the new SDK tools ( ...
- Android开发之自定义Notification(源代码分享)
Android的自定义notification选项我觉得限制还是挺多的,如图所示,官方API告诉我们它依然必须得设置icon,tittle,text三个选项,除此之外,还一定要设置pengdingin ...
- Android开发之通知栏Notification详解
Notification的用法 --- 状态栏通知 发送一个状态栏通知必须的两个类: 1. NotificationManager --- 状态栏通知的管理类,负责发通知 ...
- Android开发手记开发自习助手
apk下载地址 平时去自习的话,经常发现坐还没一个小时,发现这个班要上课,踮手踮脚地去找下一间.如果有个应用,掏出手机就能看到,全天都空的自习教室.全上午都没课的教室.全下午都没课的教室,该多好.于是 ...
- android notification自动消失,Android开发 -- 状态栏通知Notification、NotificationManager详解...
本想自己写一个的,但是看到这篇之后,我想还是转过来吧,实在是非常的详细: 在Android系统中,发一个状态栏通知还是很方便的.下面我们就来看一下,怎么发送状态栏通知,状态栏通知又有哪些参数可以设置? ...
- Android开发笔记(五十二)通知推送Notification
PendingIntent 准备工作复习一下PendingIntent,前面的博文< Android开发笔记(五十)定时器AlarmManager>已经提到了它.PendingIntent ...
- Android开发视频教程大总结—23部视频教程
本文由安卓航班网整理,转载请注明! 1.<腾讯微博Android客户端开发课程> 2.<新浪微博Android客户端项目视频> 3.<Android开发从零开始视频教程& ...
- Android开发随手记
本文是作者在Android开发实践中的随手速记,记录一些小问题的解决方案和注意事项,持续更新. 以下是速记内容,若有不严谨的地方,望小伙伴们指出. 1.Module 不生成R文件,可尝试取消对该Mod ...
最新文章
- html支持1080p,1080p完美支持
- 蚂蚁集团研究员王益:Go+ 可有效补全 Python 的不足
- JavaScript七种非常经典的创建对象方式
- cwRsync 同步时报错 STATUS_ACCESS_VIOLATION
- C++中的final关键字
- kafka架构组件概念详解:Broker、Topic、Partition、Leader/Follower、Consumer Group、zookeeper
- 未备案域名临时跳过备案提示_做好了网页,有域名和服务器,还要怎么搭建网站?...
- 为什么有的安卓手机越用越慢,刷机也不行?
- java list循环_【知识】Java中循环打印出LIST的各属性的值
- PhpStorm无法获取Post数据 配置
- Linux上运行Python文件
- 第 7 章 Neutron - 071 - 详解 ML2 Core Plugin(I)
- 抖音视频水印如何去除掉?
- 证件照制作如此简单——基于人脸检测与自动人像分割轻松制作个人证件照(C++实现)
- python重启路由器_利用python重启路由器
- 投资组合分析的 GE McKinsey 矩阵
- python的循环语句有哪些_python的循环语句
- 原理 + 代码 | Python 实现多元线性回归模型 (建模 + 优化,附源数据)
- jacob java excel_Java使用jacob将微软office中word、excel、ppt转成pdf
- 【Paper Reading】二值化网络——BNN
热门文章
- unity 2020 怎么写shader使其接受光照?_用Unity实现半条命Alyx中的液体物理效果
- 狂神css3笔记,【CSS】CSS3学习笔记(一)——选择器
- 倒计时小工具_想要工作效率更高?这几款计时工具你一定不能错过!
- sdk是什么_海外APP和游戏中最常用SDK排名(截止5月17, 2020)
- Python文件读写模式
- jsp转换java_JSP编码转换
- 中山大学计算机系学霸,中山大学学霸双胞胎姐妹毕业了,这颜值真是逆天啊!...
- mysql 不在另一个表中_MySQL选择查询从表中选择不在另一个表中的行?
- Huffuman树(java)
- nio java是什么_Java NIO 的前生今世 之一 简介