有时候,我们需要应用程序在状态内显示一些通知信息,这时我们就需要使用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相关推荐

  1. ldflags android,Android 开发手记一 NDK编程实例

    Android开发手记一 ---- NDK编程实例 在Android上,应用程序的开发,大部分基于Java语言来实现.要使用c或是c++的程序或库,就需要使用NDK来实现.NDK是Native Dev ...

  2. 使用Android开发工具23版更新Eclipse

    本文翻译自:Update Eclipse with Android development tools v. 23 I updated Eclipse with the new SDK tools ( ...

  3. Android开发之自定义Notification(源代码分享)

    Android的自定义notification选项我觉得限制还是挺多的,如图所示,官方API告诉我们它依然必须得设置icon,tittle,text三个选项,除此之外,还一定要设置pengdingin ...

  4. Android开发之通知栏Notification详解

    Notification的用法  --- 状态栏通知  发送一个状态栏通知必须的两个类:            1. NotificationManager   --- 状态栏通知的管理类,负责发通知 ...

  5. Android开发手记开发自习助手

    apk下载地址 平时去自习的话,经常发现坐还没一个小时,发现这个班要上课,踮手踮脚地去找下一间.如果有个应用,掏出手机就能看到,全天都空的自习教室.全上午都没课的教室.全下午都没课的教室,该多好.于是 ...

  6. android notification自动消失,Android开发 -- 状态栏通知Notification、NotificationManager详解...

    本想自己写一个的,但是看到这篇之后,我想还是转过来吧,实在是非常的详细: 在Android系统中,发一个状态栏通知还是很方便的.下面我们就来看一下,怎么发送状态栏通知,状态栏通知又有哪些参数可以设置? ...

  7. Android开发笔记(五十二)通知推送Notification

    PendingIntent 准备工作复习一下PendingIntent,前面的博文< Android开发笔记(五十)定时器AlarmManager>已经提到了它.PendingIntent ...

  8. Android开发视频教程大总结—23部视频教程

    本文由安卓航班网整理,转载请注明! 1.<腾讯微博Android客户端开发课程> 2.<新浪微博Android客户端项目视频> 3.<Android开发从零开始视频教程& ...

  9. Android开发随手记

    本文是作者在Android开发实践中的随手速记,记录一些小问题的解决方案和注意事项,持续更新. 以下是速记内容,若有不严谨的地方,望小伙伴们指出. 1.Module 不生成R文件,可尝试取消对该Mod ...

最新文章

  1. html支持1080p,1080p完美支持
  2. 蚂蚁集团研究员王益:Go+ 可有效补全 Python 的不足
  3. JavaScript七种非常经典的创建对象方式
  4. cwRsync 同步时报错 STATUS_ACCESS_VIOLATION
  5. C++中的final关键字
  6. kafka架构组件概念详解:Broker、Topic、Partition、Leader/Follower、Consumer Group、zookeeper
  7. 未备案域名临时跳过备案提示_做好了网页,有域名和服务器,还要怎么搭建网站?...
  8. 为什么有的安卓手机越用越慢,刷机也不行?
  9. java list循环_【知识】Java中循环打印出LIST的各属性的值
  10. PhpStorm无法获取Post数据 配置
  11. Linux上运行Python文件
  12. 第 7 章 Neutron - 071 - 详解 ML2 Core Plugin(I)
  13. 抖音视频水印如何去除掉?
  14. 证件照制作如此简单——基于人脸检测与自动人像分割轻松制作个人证件照(C++实现)
  15. python重启路由器_利用python重启路由器
  16. 投资组合分析的 GE McKinsey 矩阵
  17. python的循环语句有哪些_python的循环语句
  18. 原理 + 代码 | Python 实现多元线性回归模型 (建模 + 优化,附源数据)
  19. jacob java excel_Java使用jacob将微软office中word、excel、ppt转成pdf
  20. 【Paper Reading】二值化网络——BNN

热门文章

  1. unity 2020 怎么写shader使其接受光照?_用Unity实现半条命Alyx中的液体物理效果
  2. 狂神css3笔记,【CSS】CSS3学习笔记(一)——选择器
  3. 倒计时小工具_想要工作效率更高?这几款计时工具你一定不能错过!
  4. sdk是什么_海外APP和游戏中最常用SDK排名(截止5月17, 2020)
  5. Python文件读写模式
  6. jsp转换java_JSP编码转换
  7. 中山大学计算机系学霸,中山大学学霸双胞胎姐妹毕业了,这颜值真是逆天啊!...
  8. mysql 不在另一个表中_MySQL选择查询从表中选择不在另一个表中的行?
  9. Huffuman树(java)
  10. nio java是什么_Java NIO 的前生今世 之一 简介