一。概念

  通知(Notification)是 Android 系统中比较有特色的一个功能,当某个应用程序希望像用户发送一些提示消息的时候,然而此时应用程序并不在前台运行,此时就可以借助通知来实现。发出一条通知后,手机的最上方的状态栏会显示一个通知的图标,下拉状态栏之后可以看到通知的详细信息。

二。创建通知的步骤

  1. 首先需要一个  NotificationManager  来对通知你进行管理。

    可以调用  Context  的getSystemService() 方法来得到  NotificationManager 对象。 getSystemService()方法接收一个参数就可以确定获取系统的哪个服务。在这里我们传入Context.NOTIFICATION_SERVICE 即可。

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

  2. 接下来需要创建一个 Notification 对象,这个对象用于存储通知所需的各种信息,我们可以使用它的有三个参数的构造函数来进行创建。

    Notification()  Constructs a Notification object with default values.

    Notification(int icon, CharSequence tickerText, long when)   This constructor was deprecated      in API level 11.    Use Notification.Builder instead.

    Notification(Parcel parcel)   Unflatten the notification from a parcel.

    我们可以使用Notification的有有三个参数的造函数。

    第一个参数用于指定通知的图标,比如项目的 res/drawable 目录下有一张 icon.png 图片,那么这里我们传入 R.drawable.icon。

    第二个参数用于指定通知的 ticker 内容,当通知刚被创建是,他会在系统状态栏一闪而过,属于一种瞬时提示消息。

    第三个参数用于指定通知被创建的时间,当下拉状态栏时,这里指定的时间会显示在通知上。

    所以,我们创建一个 Notification 对象就可以写成:

Notification notification = new Notification(R.drawable.icon,  "This is ticker text", System.currentTimeMellis());

  3. 创建好了 Notification 对象之后我们还需要对通知的布局进行设定。

    我们只需要调用 setLatestEventInfo() 方法就可以给通知设置一个标准的布局。

    public  void  setLatestEventInfo(Context context, CharSequence contentTitle, CharSequence contentText, PendingIntent contentIntent)

    这个方法接收四个参数:

    第一个是 Context;第二个用于指定标题内容下拉状态栏是,就是现实这个内容第三个用于指定正文内容,同样是下拉状态栏的时候可以看到,第四个参数 我们先传入null,后面再说,这个参数是用于指定,点击这个通知的时候的响应;

    

notification.setLatestEventInfo(context, "This is content title", "This is content", null);

  4. 最后我们只需要 NotificationManager 的 notify() 方法就可以让通知显示出来。

    public  void  notify(int id, Notification notification)

    public  void  notify(String tag, int id, Notification notification)

    notify 方法接收两个参数: 第一个是 id,要保证每个通知指定的 id 是唯一的; 第二个参数则是 Notification 对象,这里我们只需要把刚才创建好的 notification 对象传入即可。

manager.notify(1, notification);

到这里我们就完成了通知的创建,通知既可以在活动中创建,还可以在广播接收器和服务中创建。我们一般不在活动中创建,不管在哪儿创建,步骤都是一样的。

  5. 下拉状态栏,响应点击通知栏。

    3 中的 setLatestEventInfo 的最后一个参数 PendingIntent 就是在合适的时机去执行某个动作。

    可以根据你创建 通知的地方调用相应的方法得到 PendingIntent 的实例, getActivity(),getBroadcast() , getService()。

    这几个方法接收的参数是相同的,第一个是 Context,第二个一般用不到,传入0即可,第三个参数是 Intent ,通过这个实现跳转, 第四个参数用于确定PendingInetent 的行为。

Intent intent = new Intent(this, NotificationActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
notification.setLatestEventInfo(context, "This is content title", "This is content", pendingIntent);

  6. 跳转到对应的界面后,取消通知栏

  

  

NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(1);

Android 通知的基本用法的更多相关文章

  1. 【转】通知 Toast详细用法(显示view)

    原文网址:http://www.pocketdigi.com/20100904/87.html 今天学习Android通知 Toast的用法,Toast在手机屏幕上向用户显示一条信息,一段时间后信息会 ...

  2. android的logcat详细用法

    Android日志系统提供了记录和查看系统调试信息的功能.日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过 logcat 命 令来查看和使用. 使用logcat命令 你可以用 logc ...

  3. 怎么通过activity里面的一个按钮跳转到另一个fragment(android FragmentTransaction.replace的用法介绍)

    即:android FragmentTransaction.replace的用法介绍 Fragment的生命周期和它的宿主Activity密切相关,几乎和宿主Activity的生命周期一致,他们之间最 ...

  4. Android开发中Bundle用法包裹数据(转)

    Android开发中Bundle用法包裹数据 Bundle的经典用法,包裹数据放入Intent中,目的在于传输数据. SDK 里是这样描述: A mapping from String values ...

  5. 【转】Android各种Adapter的用法

    转自:http://my.oschina.net/u/658933/blog/372151 Android各种Adapter的用法 发表于5个月前(2015-01-27 10:56)   阅读(143 ...

  6. android application类的用法

    android application类的用法 Application是android系统Framework提供的一个组件,它是单例模式(singleton),即每个应用只有一个实例,用来存储系统的一 ...

  7. android 中uri.parse()用法

    android 中uri.parse()用法 1,调web浏览器 Uri myBlogUri = Uri.parse("http://xxxxx.com"); returnIt = ...

  8. Android webView 正确的用法

    Android webView 正确的用法 引言: 我在网络找了几个例子,基本上都有问题,<Android疯狂讲义>13.4中的源代码也有问题.终于在官网找到正确的用法.点我. 基本用法: ...

  9. Android RxJava 2 的用法 just 、from、map、subscribe、flatmap、Flowable、Function、Consumer ...【转】

    先简单说说RxJava的用途与价值 原文出处:Android RxJava 2 的用法 用途: 异步 (也就是开线程跳转) 价值: 面对复杂的逻辑,它依然 简洁 ,代码 易读 RxJava2 与 Rx ...

随机推荐

  1. 使用Typescript重构axios(二十四)——防御XSRF攻击

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  2. CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths——dsu on tree

    题目描述 一棵根为1 的树,每条边上有一个字符(a-v共22种). 一条简单路径被称为Dokhtar-kosh当且仅当路径上的字符经过重新排序后可以变成一个回文串. 求每个子树中最长的Dokhtar- ...

  3. wordpress插件:multiple post thumbnails(可为文章添加多个特色图片)

    我们经常会给wordpress的文章加上特色图片来实现日志缩略图的需求,但是很多时候一张图片并不能够完美而又全面的表达我们wordpress文章的内容,这时候您可能就会需要这样一个能让wordpres ...

  4. linux-mysql8的安装步骤详解及需要注意的坑

    (本文由言念小文原创,转载请注明出处) 前言 最近安装mysql8时,遇到了一些问题,记录下来作为以后操作指导资料. Linux上mysql安装方法个人目前使用的有两种: 一种是基于rpm安装: 另一 ...

  5. C# web项目中sql数据库转sqlite数据库

    最近做了一个小网站,用到了一个使用sql server 2005的.net cms系统,但是现在我所买虚拟主机的服务商,不给虚拟主机提供sql server服务了,那就转数据库吧,转啥好呢,思来想去, ...

  6. 后台服务器框架中的瑞士军刀——MCP

    上篇介绍了一个简单的UDP服务框架,但是面对海量的请求,同步框架显然有点力不从心.于是在我接手好友系统的接口服务的时候,就采用了一个强大的异步框架——MCP框架. MCP框架是一个多进程异步框架,支持 ...

  7. nyoj 739 笨蛋难题四

    笨蛋难题四 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 这些日子笨蛋一直研究股票,经过调研,终于发现xxx公司股票规律,更可喜的是 笨蛋推算出这家公司每天的股价, ...

  8. arm下dlsym返回的符号地址居然不是偶对齐的。

    我们都知道在写汇编函数过程都会偶对齐,而gcc编译器都会将函数编译为cpu字长对齐的地址.arm指令集是固定32位指令长度,thumb指令集是固定16位指令长度, 但是运行在arm下的程序,dlsym ...

  9. .NET资源泄露与处理方案

    .NET虽然拥有强大易用的垃圾回收机制,但并不是因为这样,你就可以对资源管理放任不管,其实在稍不注意的时候,可能就造成了资源泄露,甚至因此导致系统崩溃,到那时再来排查问题就已经是困难重重. 一.知识点 ...

  10. Linux基础命令复习01

    一.Linux中的基本查看.查找命令: 1.ls 查看目录信息:  -l  #查看属性,以长格式显示 -d #查看本身属性 -A #显示包括以.开头的隐藏文档 -h #提供易读的单位 -R  #表示递 ...