android发送通知及更新通知
/**
* 发送通知
*/
public void setNotification(){
/**  start */
//1.得到NotificationManager:
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);        // 创建⼀个新的Notification对象,并添加图标
notification = new Notification();
// 通知显⽰的图标
notification.icon = R.drawable.icon_bao;
// 在状态栏(Status Bar)显⽰的通知⽂本提⽰,如:
notification.tickerText = "收到⼀个新的通知";
//发出提⽰⾳,如:
notification.defaults |= Notification.DEFAULT_SOUND;//或
//        notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");//或
//        notification.sound = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "6");        //填充Notification的各个属性:
Context context = getApplicationContext();
CharSequence contentTitle = "通知标题";
CharSequence contentText = "通知内容";
//点击通知跳转到哪⾥
Intent notificationIntent = new Intent(this, CreateMemberActivity.class);
PendingIntent contentIntent = Activity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
//在通知栏上点击此通知后⾃动清除此通知
notification.flags |= Notification.FLAG_AUTO_CANCEL;
//LED灯闪烁
notification.defaults |= Notification.DEFAULT_LIGHTS;
//        或者可以⾃⼰的LED提醒模式:
//        notification.ledARGB = 0xff00ff00;
//        notification.ledOnMS = 300; //亮的时间
/
/        notification.ledOffMS = 1000; //灭的时间
//        notification.flags |= Notification.FLAG_SHOW_LIGHTS;
//⼿机振动
notification.defaults |= Notification.DEFAULT_VIBRATE;
//        或
//        long[] vibrate = {0,100,200,300};
//        notification.vibrate = vibrate;
//发送通知
/**  end */
}
/
**
* 更新通知
*/
public void updateNotification(){
notification.tickerText = "收到第⼆个新的通知";
Context context = getApplicationContext();
CharSequence contentTitle = "点击跳转";
CharSequence contentText = "跳转到添加会员";
//点击通知跳转到哪⾥
Intent notificationIntent = new Intent(this, MemberDetailsActivity.class);
PendingIntent contentIntent = Activity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
}
通知是应⽤程序通知⽤户的⼀种⽅式,它⽆须活动,由通知管理器进⾏统⼀管理。通知包含⼀下功能:
1.      创建新的状态栏图标
2.      在扩展的状态栏窗⼝显⽰额外的信息(可以发起⼀个意图)
3.      闪烁/LED
4.      让⼿机震动
5.      发出声⾳(铃声,媒体库歌曲)
通知管理器是⽤来处理通知的系统服务,使⽤getSystemService⽅法可以获得对它的引⽤,如下:
NotificationManager notificationManager = (NotificationManager)
通过使⽤通知管理器,可以触发新的通知,修改现有的通知或者删除那些不再需要的通知。⾸先创建⼀个新的Notification对象并传递给它要在状态栏显⽰的图标、状态栏的点击⽂本以及这个通知的时间。可以设置Notification对象的number属性来显⽰⼀个状态栏图标所表⽰的事件的数量。
Notification notification = new Notification(R.drawable.icon,"在EoeAndroidReceiver1中", System.currentTimeMillis());
可以通过两张⽅式在扩展的状态窗⼝配置通知的外观。
1.      使⽤setLatestEventInfo⽅法更新标准的扩展的状态通知显⽰中所显⽰的详细信息。
2.      使⽤⼀个远程视图(Remote View)设置contentView和contentIntent,以便为扩展的状态显⽰分配⼀个定制的UI。
最简单的⽅法是使⽤setLatestEventInfo⽅法来填充默认的状态窗⼝布局。标准的扩展的状态窗⼝布局会显⽰构造函数中定义的图标和时间,以及标题和⼀个详细信息字符串。
notification.setLatestEventInfo(context, "在EoeAndroidReceiver1中", null,contentIntent);
通知常⽤于请求⽤户的动作或注意,所以可以指定⼀个PendingIntent,当⽤户单击通知项的时候触发它,在⼤多数情况下,该意图应该打开应⽤程序,并导航到为通知提供了上下⽂的活动。
PendingIntent contentIntent = Activity(context, 0,new Intent(context, ActivityMain.class), 0);
notification.setLatestEventInfo(context, "在EoeAndroidReceiver1中", null,contentIntent);
向通知添加声⾳、闪灯和振动效果的最简单、最⼀致的⽅式是使⽤当前的⽤户默认设置,使⽤defaults属性,可以组合:
Notification.DEFAULT_LIGHTS
Notification.DEFAULT_SOUND
Notification.DEFAULT_VIBRATE
如果想全部使⽤默认值,可以使⽤Notification.DEFAULT_ALL常量。
Notification.defaults =Notificaiton.DEFAULT_ALL;
通过向sound属性分配⼀个位置URI,android可以将⼿机上的任意⾳频⽂件作为通知进⾏播放。要使⽤⾃⼰定制的⾳频,需要把它复制到设备上,或者把它包含在原始资源(raw)中。
Uri uri =DefaultUri(RingtongManager.TYPE_NOTIFICATION);
Notification.sound=uri;
可以使⽤电话的振动功能,让通知执⾏指定类型的振动。Android可以控制振动的类型,可以使⽤振动来传递信息或者吸引⽤户的注意。
安卓intent用法
要设置振动类型,可以向通知的vibrate属性分配⼀个longs类型的数组:构造该数组,可以使得代表振动时间的值和代表暂停时间的值交替存在。使⽤振动必须添加权限:
<uses-permissionandroid:name=”android.permission.VIBRATE”/>
Long[] vibrate = newlong[]{1000,1000,1000,1000,1000};
notification.vibrate=vibrate;
通知还可以包含⽤来配置设备的LED的颜⾊和闪烁频率的属性。
每个设备在对LED的控制⽅⾯可能具有不同的限制。如果指定的颜⾊可⽤,则将使⽤⼀个与指定颜⾊最接近的颜⾊。
ledARGB属性可以⽤来设置LED颜⾊,⽽ledOffMS和ledOnMS属性则可以设置LED闪烁的频率和模式。可以通过把ledOnMS属性设置为1,并且把ledOffMS设置为0来打开LED,或者也可以通过把这两个属性都设置为0来关闭LED。
⼀旦配置了LED设置,就必须在通知的flags属性中添加FLAG_SHOW_LIGHTS标记。
notification.ledARGB = Color.RED
notification.ledOffMS = 0;
notification.ledOnMS = 1;
notification.flags = notification.flags |Notification.FLAG_SHOW_LIGHTS;
通过设置通知的FLAG_INSISTENT和FLAG_ONGOING_EVENT标记,可以把它配置为持续的或者连续的。
持续的通知会⼀直重复⾳频、振动和闪灯设置,只到被取消为⽌。
1. NotificationManager和Notification⽤来设置通知。
通知的设置等操作相对⽐较简单,基本的使⽤⽅式就是⽤新建⼀个Notification对象,然后设置好通知的各项参数,然后使⽤系统后台运⾏的NotificationManager服务将通知发出来。
基本步骤如下:
1)得到NotificationManager:
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
2)创建⼀个新的Notification对象:
Notification notification = new Notification();
notification.icon = ification_icon;
也可以使⽤稍微复杂⼀些的⽅式创建Notification:
int icon = ification_icon; //通知图标
CharSequence tickerText = "Hello"; //状态栏(Status Bar)显⽰的通知⽂本提⽰
long when = System.currentTimeMillis(); //通知产⽣的时间,会在通知信息⾥显⽰
Notification notification = new Notification(icon, tickerText, when);
3)填充Notification的各个属性:
Context context = getApplicationContext();
CharSequence contentTitle = "My notification";
CharSequence contentText = "Hello World!";
Intent notificationIntent = new Intent(this, MyClass.class);
PendingIntent contentIntent = Activity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
Notification提供了丰富的⼿机提⽰⽅式:
a)在状态栏(Status Bar)显⽰的通知⽂本提⽰,如:
notification.tickerText = "hello";
b)发出提⽰⾳,如:
notification.defaults |= Notification.DEFAULT_SOUND;
notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");
notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");
c)⼿机振动,如:
notification.defaults |= Notification.DEFAULT_VIBRATE;
long[] vibrate = {0,100,200,300};
notification.vibrate = vibrate;
d)LED灯闪烁,如:
notification.defaults |= Notification.DEFAULT_LIGHTS;
或者可以⾃⼰的LED提醒模式:
notification.ledARGB = 0xff00ff00;
notification.ledOnMS = 300; //亮的时间
notification.ledOffMS = 1000; //灭的时间
notification.flags |= Notification.FLAG_SHOW_LIGHTS;
* 更多的特征属性
* notification.flags |= FLAG_AUTO_CANCEL; //在通知栏上点击此通知后⾃动清除此通知
* notification.flags |= FLAG_INSISTENT; //重复发出声⾳,直到⽤户响应此通知
* notification.flags |= FLAG_ONGOING_EVENT; //将此通知放到通知栏的"Ongoing"即"正在运⾏"组中
* notification.flags |= FLAG_NO_CLEAR; //表明在点击了通知栏中的"清除通知"后,此通知不清除,
* //经常与FLAG_ONGOING_EVENT⼀起使⽤
* notification.number = 1; //number字段表⽰此通知代表的当前事件数量,它将覆盖在状态栏图标的顶部
* //如果要使⽤此字段,必须从1开始
* notification.iconLevel = ; //
*/
//设置通知的事件消息
Context context = getApplicationContext(); //上下⽂
CharSequence contentTitle = "My Notification"; //通知栏标题
CharSequence contentText = "Hello World!"; //通知栏内容
Intent notificationIntent = new Intent(this,Main.class); //点击该通知后要跳转的Activity
PendingIntent contentIntent = Activity(this,0,notificationIntent,0);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
//把Notification传递给NotificationManager
4)发送通知:
private static final int ID_NOTIFICATION = 1;
2. 通知的更新
如果需要更新⼀个通知,只需要在设置好notification之后,再调⽤setLatestEventInfo,然后重新发送⼀次通知即可。
3. ⾃定义通知视图
这部分可以参考官⽅⽂档,讲的很详细了。
AndroidSDK: docs/guide/topics/ui/notifiers/notifications.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。