美文网首页
通知栏Notification点击,取消,清除响应事件

通知栏Notification点击,取消,清除响应事件

作者: HEXG_ | 来源:发表于2017-10-18 15:27 被阅读0次

转载: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点击,取消,清除响应事件

相关文章

网友评论

      本文标题:通知栏Notification点击,取消,清除响应事件

      本文链接:https://www.haomeiwen.com/subject/wpceuxtx.html