Android中的消息通知(NotificationManager和Notification)
下面来谈谈notification,这个notification一般用在电话,短 信,邮件,闹钟铃声,在手机的状态栏上就会出现一个小图标,提示用户处理这个通知,这时手从上方滑动状态栏就可以展开并处理这个快讯。已添加的 Notification.Builder,使其更容易构建通知。notification是一种让你的应用程序在没有开启情况下或在后台运行警示用户。 它是看不见的程序组件(Broadcast Receiver,Service和不活跃的Activity)警示用户有需要注意的事件发生的最好途径。
先来区分以下状态栏和状态条的区别:
1、状态条就是手机屏幕最上方的一个条形状的区域;
在状态条有好多信息量:比如usb连接图标,手机信号图标,电池电量图标,时间图标等等;
2、状态栏就是手从状态条滑下来的可以伸缩的view;
在状态栏中一般有两类(使用FLAG_标记):
(1)正在进行的程序;
(2)是通知事件;
快速创建一个Notification的步骤简单可以分为以下四步:
第一步:通过getSystemService()方法得到NotificationManager对象;
1.
nManager = (NotificationManager)
this
.getSystemService(service);
第二步:对Notification的一些属性进行设置比如:内容,图标,标题,相应notification的动作进行处理等等;
01.
notification.icon = R.drawable.ic_launcher;
// 设置通知的图标
02.
notification.tickerText = tickerText;
// 显示在状态栏中的文字
03.
notification.when = when;
// 设置来通知时的时间
05.
notification.flags = Notification.FLAG_NO_CLEAR;
// 点击清除按钮时就会清除消息通知,但是点击通知栏的通知时不会消失
06.
notification.flags = Notification.FLAG_ONGOING_EVENT;
// 点击清除按钮不会清除消息通知,可以用来表示在正在运行
07.
notification.flags |= Notification.FLAG_AUTO_CANCEL;
// 点击清除按钮或点击通知后会自动消失
08.
notification.flags |= Notification.FLAG_INSISTENT;
// 一直进行,比如音乐一直播放,知道用户响应
09.
notification.defaults = Notification.DEFAULT_SOUND;
// 调用系统自带声音
10.
notification.defaults = Notification.DEFAULT_VIBRATE;
// 设置默认震动
11.
notification.defaults = Notification.DEFAULT_ALL;
// 设置铃声震动
12.
notification.defaults = Notification.DEFAULT_ALL;
// 把所有的属性设置成默认
第三步:通过NotificationManager对象的notify()方法来执行一个notification的消息;
1.
nManager.notify(ID, notification);
第四步:通过NotificationManager对象的cancel()方法来取消一个notificatioin的消息;
1.
nManager.cancel(ID);
Notification.build构造Notification方法介绍:
void setLatestEventInfo(Context context , CharSequencecontentTitle,CharSequence contentText,PendingIntent contentIntent)
功能: 显示在拉伸状态栏中的Notification属性,点击后将发送PendingIntent对象
参数: context 上下文环境
contentTitle 状态栏中的大标题
contentText 状态栏中的小标题
contentIntent 点击后将发送PendingIntent对象
说明:要是在Notification中加入图标,在状态栏和状态条中显示图标一定要用这个方法,否则报错!
NotificationManager类的常用方法:
通过获取系统服务来获取该对象:
NotificationManager mNotificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE) ;
NotificationManager常用方法介绍:
public void cancelAll() 移除所有通知 (只是针对当前Context下的Notification)
public void cancel(int id) 移除标记为id的通知 (只是针对当前Context下的所有Notification)
public void notify(String tag ,int id, Notification notification) 将通知加入状态栏, 标签为tag,标记为id
public void notify(int id, Notification notification) 将通知加入状态栏,,标记为id
01.
package
com.sun.alex;
02.
03.
import
android.app.Activity;
04.
import
android.app.Notification;
05.
import
android.app.NotificationManager;
06.
import
android.app.PendingIntent;
07.
import
android.content.Intent;
08.
import
android.net.Uri;
09.
import
android.os.Bundle;
10.
import
android.view.View;
11.
import
android.view.View.OnClickListener;
12.
import
android.widget.Button;
13.
14.
public
class
NotificationActivity
extends
Activity {
15.
16.
private
Button sendBtn, cancelBtn;
17.
private
Notification notification;
18.
private
NotificationManager nManager;
19.
private
Intent intent;
20.
private
PendingIntent pIntent;
21.
// Notification的标示ID
22.
private
static
final
int
ID =
1
;
23.
24.
@Override
25.
public
void
onCreate(Bundle savedInstanceState) {
26.
super
.onCreate(savedInstanceState);
27.
setContentView(R.layout.main);
28.
29.
sendBtn = (Button)
this
.findViewById(R.id.send);
30.
cancelBtn = (Button)
this
.findViewById(R.id.cancel);
31.
32.
String service = NOTIFICATION_SERVICE;
33.
nManager = (NotificationManager)
this
.getSystemService(service);
34.
35.
notification =
new
Notification();
36.
String tickerText =
"测试Notifaction"
;
// 通知提示
37.
// 显示时间
38.
long
when = System.currentTimeMillis();
39.
40.
notification.icon = R.drawable.ic_launcher;
// 设置通知的图标
41.
notification.tickerText = tickerText;
// 显示在状态栏中的文字
42.
notification.when = when;
// 设置来通知时的时间
44.
notification.flags = Notification.FLAG_NO_CLEAR;
// 点击清除按钮时就会清除消息通知,但是点击通知栏的通知时不会消失
45.
notification.flags = Notification.FLAG_ONGOING_EVENT;
// 点击清除按钮不会清除消息通知,可以用来表示在正在运行
46.
notification.flags |= Notification.FLAG_AUTO_CANCEL;
// 点击清除按钮或点击通知后会自动消失
47.
notification.flags |= Notification.FLAG_INSISTENT;
// 一直进行,比如音乐一直播放,知道用户响应
48.
notification.defaults = Notification.DEFAULT_SOUND;
// 调用系统自带声音
49.
notification.defaults = Notification.DEFAULT_SOUND;
// 设置默认铃声
50.
notification.defaults = Notification.DEFAULT_VIBRATE;
// 设置默认震动
51.
notification.defaults = Notification.DEFAULT_ALL;
// 设置铃声震动
52.
notification.defaults = Notification.DEFAULT_ALL;
// 把所有的属性设置成默认
53.
54.
sendBtn.setOnClickListener(sendClickListener);
55.
cancelBtn.setOnClickListener(cancelClickListener);
56.
}
57.
58.
private
OnClickListener sendClickListener =
new
OnClickListener() {
59.
@Override
60.
public
void
onClick(View v) {
61.
// 单击通知后会跳转到NotificationResult类
62.
intent =
new
Intent(NotificationActivity.
this
,
63.
NotificationResult.
class
);
64.
// 获取PendingIntent,点击时发送该Intent
65.
pIntent = PendingIntent.getActivity(NotificationActivity.
this
,
0
,
66.
intent,
0
);
67.
// 设置通知的标题和内容
68.
notification.setLatestEventInfo(NotificationActivity.
this
,
"标题"
,
69.
"内容"
, pIntent);
70.
// 发出通知
71.
nManager.notify(ID, notification);
72.
}
73.
};
74.
75.
private
OnClickListener cancelClickListener =
new
OnClickListener() {
76.
@Override
77.
public
void
onClick(View v) {
78.
// 取消通知
79.
nManager.cancel(ID);
80.
}
81.
};
82.
}
Android中的消息通知(NotificationManager和Notification)的更多相关文章
- 浅析Android中的消息机制(转)
原博客地址:http://blog.csdn.net/liuhe688/article/details/6407225 在分析Android消息机制之前,我们先来看一段代码: public class ...
- 浅析Android中的消息机制(转)
在分析Android消息机制之前,我们先来看一段代码: public class MainActivity extends Activity implements View.OnClickListen ...
- 浅析Android中的消息机制-解决:Only the original thread that created a view hierarchy can touch its views.
在分析Android消息机制之前,我们先来看一段代码: public class MainActivity extends Activity implements View.OnClickListen ...
- 浅析Android中的消息机制
在分析Android消息机制之前,我们先来看一段代码: public class MainActivity extends Activity implements View.OnClickListen ...
- 重温Android中的消息机制
引入: 提到Android中的消息机制,大家应该都不陌生,我们在开发中不可避免的要和它打交道.从我们开发的角度来看,Handler是Android消息机制的上层接口.我们在平时的开发中只需要和Hand ...
- Android中的消息机制
在分析Android消息机制之前.我们先来看一段代码: public class MainActivity extends Activity implements View.OnClickListen ...
- 谈谈对Android中的消息机制的理解
Android中的消息机制主要由Handler.MessageQueue.Looper三个类组成,他们的主要作用是 Handler负责发送.处理Message MessageQueue负责维护Mess ...
- MQTT协议实现Android中的消息收发
前言 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输),基于发布/订阅范式的消息协议,是一种极其简单和轻量级的消息协议,专为受限设备和低带宽.高延迟 ...
- Android中的消息机制:Handler消息传递机制
参考<疯狂android讲义>第2版3.5 P214 一.背景 出于性能优化考虑,Android的UI操作并不是线程安全的,这意味着如果有多个线程并发操作UI组件,可能导致线程安全问题.为 ...
随机推荐
- 菜鸟学JS(五)——window.onload与$(document).ready()
我们继续说JS,我们常常在页面加载完成以后做一些操作,比如一些元素的显示与隐藏.一些动画效果.我们通常有两种方法来完成这个事情,一个就是window.onload事件,另一个就是JQuery的read ...
- ecshop利用.htaccess实现301重定向的方法
实现方法如下(空间必须支持对目录中的.htaccess文件解析) 打开 .htaccess 找到 RewriteEngine on 它的下方添加 RewriteCond %{HTTP_HOST} ^需 ...
- C#后台弹出对话框
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script language='jav ...
- 《objective-c基础教程》学习笔记(八)—— 拆分接口和实现
在之前的项目中,我们编程都是直接写在一个main.m文件中.类的main()函数,@interface和@implementation部分都塞进一个文件.这种结构对于小程序和简便应用来说还可以.但是项 ...
- Sencha Touch+PhoneGap打造超级奶爸之喂养记(一) 源码免费提供
起源 非常高兴我的宝宝健康平安的出生了.对于初次做奶爸的我,喜悦过后,面临着各中担心,担心宝宝各项指标是否正常.最初几天都是在医院待着,从出生那一天开始,护士妹妹隔一段时间就会来问宝宝的喂奶,大小便, ...
- 上海华魏光纤传感科技有限公司 招聘 《.NET研发工程师》
代友招聘 <.NET研发工程师> **** 公司简介 **** 上海华魏光纤传感技术有限公司成立于2001年,注册资金1458.16万人民币,专业从事光纤传感技术的研究开发,为交通.市政等 ...
- UIRefreshControl的使用
注意: 1.需要在ios6.0之后的版本中使用 2.UIRefreshControl目前只能用于UITableViewController,如果用在其他ViewController中,运行时会错误(即 ...
- [原创]Andorid DexClassLoader的创建过程解析(基于5.0)
做Android插件框架时,经常会用到dex的动态加载,就要直接或间接的使用DexClassLoader,在new DexClassLoader的时候Android系统做了很多工作,下面我们详细分析一 ...
- 解决play-1.4.0在linux或mac下提示No such file or directory的问题
问题原因:"play"脚本中有特殊符号. 解决方案:写脚本去掉即可. 代码:fixplay.py 放在play-1.4.0目录下执行.亲测在osx与ubuntu下均可用. with ...
- php读取csv文件,在linux上出现中文读取不到的情况 解决方法
今,php读取csv文件,在linux上出现中文读取不到的情况,google,后找到解决办法<?phpsetlocale(LC_ALL, 'zh_CN');$row = 1;$handle = ...