通知中未完成的意图未被清除

时间:2016-02-24 10:36:04

标签: android push-notification google-cloud-messaging android-pendingintent

请查看我的Pending Intent代码。

        notificationIntent.putExtra("is_from_notification", true);            
        notificationIntent.putExtra("push_message_id", push_message_id);
        notificationIntent.putExtra("open_target", open_target);
        notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    PendingIntent contentIntent = PendingIntent.getActivity(context,notifyID, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        Notification noti = new NotificationCompat.Builder(context)
                .setSmallIcon(icon_small)
                .setTicker(message)
                .setLargeIcon(largeIcon)
                .setWhen(System.currentTimeMillis())
                .setContentTitle(title)
                .setContentText(message)
                .setContentIntent(contentIntent)
                .setAutoCancel(true).build();

        NotificationManager notificationManager = (NotificationManager) context
            .getSystemService(Context.NOTIFICATION_SERVICE);
       notificationManager.notify(notifyID, noti);

我的问题在于,我应该在何处以及如何清除此未决意图。它在应用程序最近的任务中保持不变。

2 个答案:

答案 0 :(得分:0)

只需调用notificationManager.cancel(notifyId);

或者

调用notificationManager.cancelAll();

希望,这有帮助。

答案 1 :(得分:-1)

清除pendingIntent使用:

修改

PendingIntent.getActivity(context,notifyID, contentIntent, PendingIntent.FLAG_UPDATE_CURRENT).cancel();

将此行放在代码中的某处,您要取消pendingintent。

注意:意图必须与pendingIntent具有相同的名称和ID,在您的情况下:notifyIDcontentIntent

  

注意: PendingIntent本身只是对系统维护的令牌的引用,描述了用于检索它的原始数据。这意味着,即使其拥有的应用程序的进程被终止,PendingIntent本身也将保持可用于已经给出它的其他进程。如果创建应用程序稍后重新检索相同类型的PendingIntent(相同的操作,相同的Intent操作,数据,类别和组件以及相同的标志),它将接收表示同一令牌的PendingIntent,如果它仍然有效,并且可以因此调用 cancel()将其删除。

     

cancel() - 取消当前有效的PendingIntent。只有拥有PendingIntent的原始应用程序才能取消它。

应该帮助你