转载:http://www.cnblogs.com/qianyukun/p/5946792.html
主要是检测android通知栏的三种状态的响应事件
这次在实现推送需求的时候,要用到android通知栏Notification点击后进入消息页面,因为要实现一个保存推送用户名字的功能,我在点击后处理了这个功能,但是测试发现我点击删除或者滑动清除后这个功能并没有执行,所以才意识到要处理删除和滑动清除的事件:
一、首先实现一个BroadcastReceiver
publicclassNotificationBroadcastReceiverextendsBroadcastReceiver {
publicstaticfinalString TYPE = "type";//这个type是为了Notification更新信息的
@Override
publicvoidonReceive(Context context, Intent intent) {
String action=intent.getAction();inttype = intent.getIntExtra(TYPE, -1);
if(type != -1) {
NotificationManager notificationManager=(NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(type);
}
if(action.equals("notification_clicked")) {
//处理点击事件
}
if(action.equals("notification_cancelled")) {
//处理滑动清除和点击删除事件
}
}
}
二、而注册Notification是这样的:
Intent intentClick =newIntent(this, NotificationBroadcastReceiver.class);
intentClick.setAction("notification_clicked");
intentClick.putExtra(NotificationBroadcastReceiver.TYPE, type);
PendingIntent pendingIntentClick= PendingIntent.getBroadcast(this, 0, intentClick, PendingIntent.FLAG_ONE_SHOT);
Intent intentCancel=newIntent(this, NotificationBroadcastReceiver.class);
intentCancel.setAction("notification_cancelled");
intentCancel.putExtra(NotificationBroadcastReceiver.TYPE, type);
PendingIntent pendingIntentCancel= PendingIntent.getBroadcast(this, 0, intentCancel, PendingIntent.FLAG_ONE_SHOT);
Uri defaultSoundUri=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder=newNotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle(getString(R.string.setting_gcm_title))
.setContentText(message)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntentClick)
.setDeleteIntent(pendingIntentCancel);
notificationManager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(type/*ID of notification*/, notificationBuilder.build());//这就是那个type,相同的update,不同add
三、当然不要忘了在AndroidManifest.xml里面注册
这样就是初步实现了android通知栏Notification点击,取消,清除响应事件