Android 通知的基本用法
一。概念
通知(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 通知的基本用法的更多相关文章
- 【转】通知 Toast详细用法(显示view)
原文网址:http://www.pocketdigi.com/20100904/87.html 今天学习Android通知 Toast的用法,Toast在手机屏幕上向用户显示一条信息,一段时间后信息会 ...
- android的logcat详细用法
Android日志系统提供了记录和查看系统调试信息的功能.日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过 logcat 命 令来查看和使用. 使用logcat命令 你可以用 logc ...
- 怎么通过activity里面的一个按钮跳转到另一个fragment(android FragmentTransaction.replace的用法介绍)
即:android FragmentTransaction.replace的用法介绍 Fragment的生命周期和它的宿主Activity密切相关,几乎和宿主Activity的生命周期一致,他们之间最 ...
- Android开发中Bundle用法包裹数据(转)
Android开发中Bundle用法包裹数据 Bundle的经典用法,包裹数据放入Intent中,目的在于传输数据. SDK 里是这样描述: A mapping from String values ...
- 【转】Android各种Adapter的用法
转自:http://my.oschina.net/u/658933/blog/372151 Android各种Adapter的用法 发表于5个月前(2015-01-27 10:56) 阅读(143 ...
- android application类的用法
android application类的用法 Application是android系统Framework提供的一个组件,它是单例模式(singleton),即每个应用只有一个实例,用来存储系统的一 ...
- android 中uri.parse()用法
android 中uri.parse()用法 1,调web浏览器 Uri myBlogUri = Uri.parse("http://xxxxx.com"); returnIt = ...
- Android webView 正确的用法
Android webView 正确的用法 引言: 我在网络找了几个例子,基本上都有问题,<Android疯狂讲义>13.4中的源代码也有问题.终于在官网找到正确的用法.点我. 基本用法: ...
- Android RxJava 2 的用法 just 、from、map、subscribe、flatmap、Flowable、Function、Consumer ...【转】
先简单说说RxJava的用途与价值 原文出处:Android RxJava 2 的用法 用途: 异步 (也就是开线程跳转) 价值: 面对复杂的逻辑,它依然 简洁 ,代码 易读 RxJava2 与 Rx ...
随机推荐
- 最适合Java开发者的一本书和一软件
一书-<Java编程思想> 一软件-IntelliJ IDEA Java自学是否可以成功,答案显而易见,可以. 自学Java关键看自己是否有毅力.是否有恒心. 自学Java 自学Java不 ...
- python基础-面向过程编程
面向过程编程 面向过程编程其实是一种机械式的思维方式,其核心就是"过程". 过程指的是一种解决问题的步骤,即先干什么再干什么,最后干什么. 优点:将复杂的问题流程化,进而简单化. ...
- nginx目录安全设置
nginx目录安全设置<pre> location ~ /\. { deny all; }</pre>这样所有隐藏文件都不会以URL方式打开了
- 支付宝小程序和微信小程序的区别(部分)
支付宝小程序和微信小程序之间的互相转换 1.首先是文件名 微信小程序 wxss ------ 支付宝小程序 acss 微信小程序 wxml ------ 支付宝小程序 axml 2.调用方法前缀 微信 ...
- maven打包记录1
在需要打包的项目目录下找到pom.xml文件 (过程中可能遇到 :-Dmaven.multiModuleProjectDirectory system property is not set. Che ...
- ASP.NET购物车Cookie获取,创建,添加,更新,删除的用法
#region 添加购物车 public void GetShoppingCart(int skuId, int quanlity) { HttpCookie cookie = HttpContext ...
- 理解MySQL数据库事务-隔离性
Transaction事务是指一个逻辑单元,执行一系列操作的SQL语句. 事务中一组的SQL语句,要么全部执行,要么全部回退.在Oracle数据库中有个名字,叫做transaction ID 在关系型 ...
- 关于IP网段划分
IP地址分类(A类 B类 C类 D类 E类) IP地址由四段组成,每个字段是一个字节,8位,最大值是255,, IP地址由两部分组成,即网络地址和主机地址.网络地址表示其属于互联网的哪一个网络 ...
- 0MQ讲述多线程魔法
为什么你想过的所有你所知道关于并发的事情,不是完全神经病的(Insane),就是假的(Bogus). 并发的定律,e=mc*c.这里并不是爱因斯坦的质能方程.而是 努力 = 代码规模 * (线程冲突碰 ...
- [UWP]用Win2D和CompositionAPI实现文字的发光效果,并制作动画
1. 成果 献祭了周末的晚上,成功召唤出了上面的番茄钟.正当我在感慨"不愧是Shadow大人,这难道就是传说中的五彩斑斓的黑?" "那才不是什么阴影效果,那是发光效果.& ...