1、经过调研,以下方案可行,但已过时。
添加一个Notification步骤:
1:获取通知管理器
NotificationManager manager=
(NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);
2:定义一个通知:
Notification notify=new Notification();
3:设置Notification的各种属性:
设置通知在状态栏显示的图标、点击通知时显示的内容、通知时发出的声音、震动模式、led闪光灯(灯的颜色,闪光时间)、通知的时间戳、设置通知显示的参数等
3.1设置通知显示的参数,可有两种方法:
//1、设置事件信息-----已过时
a、点击通知,会启动设置的activity
notify.setLatestEventInfo(NotificationTest.this, "新消息", "主人,来短息了", pi);
//b、点击通知之后,通知在状态栏上消失
notify.flags = notify.flags | Notification.FLAG_AUTO_CANCEL;
// 2,使用远程视图
a、点击通知,不会启动任何activity,除非自己手动添加事件
notify.contentView = new RemoteViews(NotificationTest.this.getPackageName(),
R.layout.my_status);
notify.contentView.setImageViewResource(R.id.image,R.drawable.notify);
notify.contentView.setTextViewText(R.id.title,"新消息");
notify.contentView.setTextViewText(R.id.text,"主人,有短息了");
notify.contentView.setOnClickPendingIntent(R.id.layout, pi);
//b、点击通知之后,通知在状态栏上不消失
notify.flags = notify.flags | Notification.FLAG_AUTO_CANCEL;
4:添加通知,当然也可以删除。
可行性分析:
从以上可以看到设置通知显示的参数时无论用那种方法都有不足之处,下面用第三种方案,最新版api中提到的Notification.builder
Notification notify = new Notification.Builder(NotificationTest.this)
.setContentTitle("新消息")
.setContentText("主人,有短息了")
.setSmallIcon(R.drawable.notify)
.setAutoCancel(true)
.setContentIntent(pi)
.setTicker("启动其他Activity的通知")
.setWhen(System.currentTimeMillis())
.build();
创建Notification时,设置setAutoCancel(true)避免了使用远程视图时,点击通知之后,通知在状态栏上不消失的情况,设置.setContentIntent(pi)避免设置事件信息时,此方法已过时的情况。
2、可行方案:
1:获取通知管理器
NotificationManager manager=
(NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);
2:定义一个通知,并设置属性
Notification notify = new Notification.Builder(NotificationTest.this)
.setContentTitle("新消息")
.setContentText("主人,有短息了")
.setSmallIcon(R.drawable.notify)
.setAutoCancel(true)
.setContentIntent(pi)
.setTicker("启动其他Activity的通知")
.setWhen(System.currentTimeMillis())
.build();
3:添加通知,当然也可以删除。
图文分析:
程序主界面上有一个Button按钮,当用户点击这个按钮时状态栏会显示一则通知,当按住状态栏下拉时可以看到这个通知在下拉列表里,此时点击这个通知就跳转到另一个界面(相当于查看这个通知)并且能将这个通知在状态栏里取消。
点击“添加notification”按钮,状态栏显示消息图标(蓝色小图标),点击“删除notification”,将取消通知,状态栏不会显示消息图标。如下图:
将状态栏向下拖动,可以看到notification的详情。如下图:
使用远程视图时,点击通知,没有反应,应为它只是一个定义好的视图,但可以为某一视图添加启动其他activity的事件setOnClickPendingIntent(viewid,pendingIntent)。设置事件信息时,点击通知,可以启动另一个activity。如下图:
参考:http://www.jb51.net/article/36567.htm