带有关闭通知操作按钮的多重通知

Multiple Notification with dismiss notification action button

我有一个应用程序将一些实体与唯一 ID 相关联并向用户通知有关实体的信息,我将使用 notificationID 与实体 ID 相同。

我完全根据以下 sample solution 构建了一个带有关闭操作的通知,完全没有任何修改。

到目前为止一切进展顺利,直到我尝试使用示例创建 2 个具有不同 ID 的通知。 问题出现了,关闭按钮只收到第一个通知的notificationID:

第一个通知按预期正常运行。

但是 BroadcastReceiver 中的第二个通知的 getExtra() 取而代之的是第一个通知的 notificationID,取消通知只会继续取消第一个通知。

我创建的通知函数,我只是用不同的 ID 调用了这个函数两次:

void createNoti(int NOTIFICATION_ID){

    Intent buttonIntent = new Intent(context, ButtonReceiver.class);
    buttonIntent.putExtra("notificationId", NOTIFICATION_ID);

    PendingIntent btPendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, buttonIntent, 0);

    NotificationCompat.Builder mb = new  NotificationCompat.Builder(getBaseContext());
    mb.addAction(R.drawable.ic_Action, "My Action", btPendingIntent);
    manager.notify(NOTIFICATION_ID, mb.build());
}

广播接收器class:

public class ButtonReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        int notificationId = intent.getIntExtra("notificationId", 0);

        NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        manager.cancel(notificationId);
    }
}

我认为问题在于将 0 传递到 PendingIntent:

PendingIntent btPendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, buttonIntent, 0);

在我开始将通知 ID 作为第二个参数传递之前,我遇到了同样的问题;所以不要传入 0,而是传入通知的 id:

PendingIntent btPendingIntent = PendingIntent.getActivity(getApplicationContext(), NOTIFICATION_ID, buttonIntent, 0);

进行更改后,我注意到单击单个通知(尤其是组中的通知)时一切正常。