正文:

privatefinalBroadcastReceivermBroadcastReceiver=newBroadcastReceiver(){@OverridepublicvoidonReceive(Contextcontext,Intentintent){if(intent==null||context==null){return;}mNotificationManager.cancel(NOTIFICATION_ID_LIVE);Stringtype=intent.getStringExtra(PUSH_TYPE);if(PUSH_TYPE_LINK.equals(type)){//mNumLinkes=0;}elseif(PUSH_TYPE_LIVE.equals(type)){//mNumLives=0;}//这里可以重新计数}};privatevoidsendLiveNotification(){Intentintent=newIntent(NOTIFICATION_CLICK_ACTION);NotificationCompat.BuildermBuilder=newNotificationCompat.Builder(this);Stringtitle="Push测试";mBuilder.setContentTitle(title);mBuilder.setTicker(title);mBuilder.setContentText("https://233.tv/over140");mBuilder.setLargeIcon(BitMapFactory.decodeResource(getResources(),R.mipmap.ic_launcher));mBuilder.setSmallIcon(R.drawable.ic_action_cast);mBuilder.setDefaults(Notification.DEFAULT_ALL);mBuilder.setWhen(System.currentTimeMillis());mBuilder.setContentIntent(PendingIntent.getBroadcast(this,NOTIFICATION_ID_LIVE,intent,0));mBuilder.setDeleteIntent(PendingIntent.getBroadcast(this,NOTIFICATION_ID_LIVE,newIntent(NOTIFICATION_DELETED_ACTION).putExtra(PUSH_TYPE,PUSH_TYPE_LIVE),0));mNotificationManager.notify(NOTIFICATION_ID_LIVE,mBuilder.build());}

代码说明

1、最重要的是setDeleteIntent,这个在API Level 11(Android 3.0) 新增的

2、注意不要设置setAutoCancel为true,否则监听器接收不到

3、这里统一了点击通知和消除通知的操作

4、注意广播在推送前要注册好