从通知发送的android清除意图

时间:2013-09-13 06:19:54

标签: android android-intent notifications android-pendingintent

我的应用程序正在通过传递信息的意图调用(状态栏中的pendingintent),但是当我点击主页按钮并通过按住主页按钮重新打开我的应用程序时,它再次调用意图并且仍然存在相同的额外内容。

有没有办法清除意图?或检查它是否曾被使用过?

Intent intent = new Intent(context, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.putExtra("reportID", reportID);
    intent.putExtra("message", message);
    intent.putExtra("toast_show", true);
    intent.putExtra("detail_open", true);
    intent.putExtra("SplashActivity", true);
    PendingIntent pendingIntent = PendingIntent
            .getActivity(context.getApplicationContext(), 0, intent,
                    PendingIntent.FLAG_UPDATE_CURRENT
                            | PendingIntent.FLAG_ONE_SHOT);

    // Intent.FLAG_ACTIVITY_NEW_TASK
    /* get the system service that manage notification NotificationManager */
    NotificationManager notificationManager = (NotificationManager) context
            .getApplicationContext().getSystemService(
                    Context.NOTIFICATION_SERVICE);
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(
            context.getApplicationContext())
            .setWhen(when)
            .setContentText(message)
            .setContentTitle(title)
            .setSmallIcon(smalIcon)
            .setAutoCancel(true)
            .setTicker(message)
            .setLargeIcon(largeIcon)
            .setDefaults(
                    Notification.DEFAULT_LIGHTS
                            | Notification.DEFAULT_VIBRATE
                            | Notification.DEFAULT_SOUND)
            .setContentIntent(pendingIntent);

    /* Create notification with builder */
    Notification notification = notificationBuilder.build();

    notificationManager.notify(0, notification);

当我收到通知时,问题就开始了。如果我从通知启动应用程序,它会启动正确的屏幕,我可以使用app =>好。但是当我退出应用程序(使用主页或后退按钮)时,它不再出现在“最近的应用程序”列表中。更确切地说: 有人知道如何在通知开始后将应用程序保留在“最近的应用程序”列表中吗?

2 个答案:

答案 0 :(得分:0)

更新此行并尝试

PendingIntent pendingIntent = PendingIntent.getActivity(context, (int)(Math.random() * 100),intent,PendingIntent.FLAG_UPDATE_CURRENT);

答案 1 :(得分:-1)

您需要的是PendingIntent.FLAG_CANCEL_CURRENT

  

如果描述的PendingIntent已经存在,则在生成新的PendingIntent之前取消当前的PendingIntent。当您只更改Intent中的额外数据时,可以使用它来检索新的PendingIntent;通过取消先前的待定意图,这可以确保只有给定新数据的实体才能启动它。

PendingIntent pendingIntent = PendingIntent.getActivity(
               context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);

这将确保您的最新数据出现在Intent