Notification即通知,用于在通知栏显示提示信息。

在较新的版本中(API level  > 11),Notification类中的一些方法被Android声明deprecated(弃用),其实基本上相当于全部弃用了,因为这个类本身方法就少得可怜。

Android官方声明弃用,一定有它的理由,虽然我也不知道是什么。奈何本人轻度强迫症患者,人家都建议你不要用了,那就不要老是恪守着N年前的东西了。

就像是以前,一说到标签页,大家基本上都会想到TabHost配合ActivityGroup,但Android后来提倡Fragment。

废话说多了,还是小结一下使用方法。下面按照创建一个通知的步骤一步一步来,同时给出新旧实现方法。

1、获取Notification管理器

NotificationManager noteMng = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

2、新建一个Notification,设置状态栏显示样式

private Notification note;
//API 11以下
note = new Notification(R.drawable.ico_launcher "显示于屏幕顶端状态栏的文本", System.currentTimeMillis());
//API 11及以上
Notification.Builder builder = new Notification.Builder(nowContext).setTicker("显示于屏幕顶端状态栏的文本")
.setSmallIcon(R.drawable.ic_laucher);

API 11以上版本中,状态栏显示的样式跟下拉通知栏中显示的样式,可以一起设置,就是通过Notification.Builder类来实现,这里的Builder只调用了两个方法来设置状态栏显示样式。

3、设置Notification标志位(非必要步骤)
//FLAG_ONGOING_EVENT表明有程序在运行,该Notification不可由用户清除
note.flags = Notification.FLAG_ONGOING_EVENT;

4、设置点击Notification后的触发事件
//通过Intent,使得点击Notification之后会启动新的Activity
Intent i = new Intent(nowContext, AnotherActivity.class);
//该标志位表示如果Intent要启动的Activity在栈顶,则无须创建新的实例
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
pendingIntent = PendingIntent.getActivity(nowContext, 100, i, PendingIntent.FLAG_UPDATE_CURRENT);

5、设置Notification在通知栏里的样式
(1)系统默认样式
//API 11以下:
note.setLatestEventInfo(nowContext, "take me to your heart", "Micheal learn to rock", pendingIntent);

//API 16及以上,build()方法要求API 16及以上

//一会API 11以上,一会API16以上,我也很想知道Android的API是怎么设计的
note = builder.setContentIntent(pendingIntent).setContentTitle("title").setContentText("text").build();

(2)自定义样式:

自定义样式,就是让Notification在通知栏显示成自定义的xml布局
应当注意的是,Notification的自定义样式,只支持以下可视组件:
FrameLayout, LinearLayout, RelativeLayout
TextView, Button, AnalogClock, ImageView, ImageButton, Chronometer, ProgressBar

RemoteView view = new RemoteView(nowActivity.getPackageName(), R.layout.note_layout);
//API 11以下
note.contentView = view;
note.contentIntent = pendingIntent;
//API 16及以上,又是build()方法导致的,汗。。
note = builder.setContent(view).setContentIntent(pendingIntent).build();

这个步骤里有一个很值得注意的地方:pendingIntent被设置为note的contentIntent的值,就意味着点击了这个通知才会触发该Intent。

那么如果只是想让自定义布局里的某个按钮触发呢?比如说,弄了一个音乐播放器,Service负责播放音乐,Notification显示当前播放进度和一些简单的暂停按钮、上一首、下一首按钮,让用户不用再打开界面就可以通过Notification上的按钮操纵音乐播放。

假设说想让自定义布局里的一个id为R.id.button1的按钮来触发这个Intent,可以如下操作:

view.setOnClickPendingIntent(R.id.button1, pendingIntent);//在上面创建RemoteView实例后加上这句

然后注意,pendingIntent已经绑定到按钮上了,上面Notificatiion实例中,设置contentIntent的语句要去掉。

6、发布该通知,第一个参数为该notification的ID
noteMng.notify(10, note);

PS:这个是我自己敲的一个txt文件,在我电脑里,可能一些变量名什么的会敲错。

但是大概步骤跟方法相信已经说清楚了。

android: Android Notification的更多相关文章

  1. Android之Notification介绍

    Notification就是在桌面的状态通知栏.这主要涉及三个主要类: Notification:设置通知的各个属性. NotificationManager:负责发送通知和取消通知 Notifica ...

  2. Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)

    在android的应用层中,涉及到很多应用框架,例如:Service框架,Activity管理机制,Broadcast机制,对话框框架,标题栏框架,状态栏框架,通知机制,ActionBar框架等等. ...

  3. android通知栏Notification点击,取消,清除响应事件

    主要是检测android通知栏的三种状态的响应事件 这次在实现推送需求的时候,要用到android通知栏Notification点击后进入消息页面,因为要实现一个保存推送用户名字的功能,我在点击后处理 ...

  4. android通知-Notification

    android中,当app需要向发送一些通知,让使用者注意到你想要告知的信息时,可以用Notification.下面,就来讨论一下,Notification的用法,我们从实际的小例子来进行学习. 1. ...

  5. Android --通知栏Notification

    参考博客:Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它) //创建一个通知栏的Builder构造类 (Create a Notification Bui ...

  6. Android之Notification的多种用法(转)

    我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的. 我们也 ...

  7. 【转】can't find referenced method 'android.app.RemoteInput[] getRemoteInputs()' in class android.app.Notification$Action

    原文网址:http://stackoverflow.com/questions/25508735/cant-find-referenced-method-android-app-remoteinput ...

  8. Android之Notification的多种用法

    我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的. 我们也 ...

  9. Android 通知栏Notification的整合 全面学习 (一个DEMO让你全然了解它)

    在android的应用层中,涉及到非常多应用框架.比如:Service框架,Activity管理机制,Broadcast机制,对话框框架,标题栏框架,状态栏框架.通知机制,ActionBar框架等等. ...

  10. android自定义Notification通知栏实例

    项目有个需求,需要在发送Notification的时候动态给定url的图片.大概思路如下:自己定义一个Notification的布局文件,这样能够很方便设置View的属性. 首先加载网络图片,使用Bi ...

随机推荐

  1. js 获取、清空 input type="file"的值 .(转)

    上传控件基础知识说明: 上传控件(<input type="file"/>)用于在客户端浏览并上传文件,用户选取的路径可以由value属性获取,但value属性是只读的 ...

  2. 框架的 总结(nop)------添加功能

    一.添加功能 1.首先需要在前端显示界面View视图中添加 <div class="pull-right"> <a href="@Url.Action( ...

  3. 2227 邮票--FUoj(链接表+树的直径)

    http://acm.fzu.edu.cn/problem.php?pid=2227 我感觉这道题可以随意搞 题目大意: 给你的一个图就是一条链,但是不知道起始点和结束点,而且每个点只会访问一次. 因 ...

  4. 数论(poj 1401)

    题目:Factorial 题意:求N!末尾的0 的数量. 思路:10  = 2 * 5:N!中的2 的数量肯定比 5多:只需寻找5 的数量,暴力寻找TLE: 快点的方法:f(N) = N/5 + f( ...

  5. p1304 家族

    描述 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚.如果x,y是亲戚 ...

  6. java内部类和匿名内部类

    内部类即是包含在类里面的又一个类. java内部类分为: 成员内部类.静态嵌套类.方法内部类.匿名内部类 . 内部类的共性 (1).内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.clas ...

  7. React与ES6(四)ES6如何处理React mixins

    React与ES6系列: React与ES6(一)开篇介绍 React和ES6(二)ES6的类和ES7的property initializer React与ES6(三)ES6类和方法绑定 React ...

  8. 一些gem的简要翻译(欢迎提出问题共同讨论)

    写这篇文章主要有两方面用途 1.希望给rails同行一定的帮助,翻译水平有限,贴出中英文,翻译有误的地方欢迎指正,非常感谢,转载请标明出处,谢谢. 2.加深作者对gem的理解,有需要更详细了解安装以及 ...

  9. mybatis异常

    一.Invalid bound statement 1.mapper.xml中namespaces错误(***) 2.方法不存在 3.方法返回值错误 二.Mapped Statements colle ...

  10. Windows下Qt5搭建Android开发环境笔记

    Windows很大的特点是配置使用几乎都可以图形化进行,和Linux比起来在很多时候配置环境也要方便很多.所以,搭建Qt for Andorid也是十分简单的.需要以下工具: 1.最方便的Qt官方包, ...