当在 android 中的设备系统托盘中选择通知时,其他通知将失去点击行为

The other notifications is lost the click behaviour, when a notification is chosen at device's system tray in android

如果我的应用程序在设备的系统托盘中有两个通知,用户选择一个通知,应用程序打开但所有其他通知都失去了点击行为,这意味着用户无法再点击它们。我怎样才能阻止这个动作?

我的代码:

NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.icon)
            .setContentTitle(getString(R.string.test))
            .setContentText(messageBody);

Intent intent = new Intent(this, NotifActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Bundle bundle = new Bundle();
bundle.putString(NotificationViewActivity.MESSAGE_EXTRA, messageBody);
intent.putExtras(bundle);

PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
                                     intent, PendingIntent.FLAG_ONE_SHOT);
builder.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) 
                                           getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(new Random().nextInt(50) + 1, builder.build());
int mId = (int) System.currentTimeMillis();
                        NotificationCompat.Builder mBuilder =
                                new NotificationCompat.Builder(context)
                                        .setSmallIcon(R.drawable.imagename)
                                        .setContentTitle("Title")
                                        .setContentText("message")
                                        .setDefaults(Notification.DEFAULT_ALL)
                                        .setAutoCancel(true);
                        // Creates an explicit intent for an Activity in your app
                        Intent resultIntent = new Intent(context, activityname.class);
//activityname is the name of activity which you want to launch
                        resultIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

                        // The stack builder object will contain an artificial back stack for the
                        // started Activity.
                        // This ensures that navigating backward from the Activity leads out of
                        // your application to the Home screen.
                        TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
                        // Adds the back stack for the Intent (but not the Intent itself)
                        stackBuilder.addParentStack(MainActivity.class);
                        // Adds the Intent that starts the Activity to the top of the stack
                        stackBuilder.addNextIntent(resultIntent);
                        PendingIntent resultPendingIntent =
                                stackBuilder.getPendingIntent(
                                        0,
                                        PendingIntent.FLAG_UPDATE_CURRENT
                                );
                        mBuilder.setContentIntent(resultPendingIntent);
                        NotificationManager mNotificationManager =
                                (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
                        // mId allows you to update the notification later on.
                        mNotificationManager.notify(mId, mBuilder.build());

我在下面的代码中检测到我的根本原因

PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
        PendingIntent.FLAG_ONE_SHOT);

因为所有通知的请求代码都是相同的,所以当我们点击一​​个通知时,另一个失去了他们的点击监听器。修复如下代码

PendingIntent pendingIntent = PendingIntent.getActivity(this, (int) System.currentTimeMillis(), intent,
        PendingIntent.FLAG_ONE_SHOT);