Вторая кнопка из уведомления, пакет, который я получаю в IntentService, содержит дополнения от первой кнопки

Вот код, который я использую для своих намерений:

  String tag = "#business"; String secondTag = "#personal";
  Intent action1Intent = new Intent(context, NotificationActionService.class)
            .setAction("tag").putExtra("id", psTrip.getId()).putExtra("tag", tag);
    PendingIntent action1PendingIntent = PendingIntent.getService(context, 0,
            action1Intent, PendingIntent.FLAG_ONE_SHOT);

    Intent action2Intent = new Intent(context, NotificationActionService.class)
            .setAction("tag").putExtra("id", psTrip.getId()).putExtra("tag", secondTag);
    PendingIntent action2PendingIntent = PendingIntent.getService(context, 0,
            action2Intent, PendingIntent.FLAG_ONE_SHOT);

Вот как я создаю действия:

   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
        RemoteInput remoteInput = new RemoteInput.Builder("Business")
                .setLabel("Business")
                .build();
        Notification.Action action =
                new Notification.Action.Builder(R.drawable.btn_tag_trip,
                        tag, action1PendingIntent)
                        .addRemoteInput(remoteInput)
                        .build();

        RemoteInput remoteInput2 = new RemoteInput.Builder("Personal")
                .setLabel("Personal")
                .build();
        Notification.Action action2 =
                new Notification.Action.Builder(R.drawable.btn_tag_trip,
                        secondTag, action2PendingIntent)
                        .addRemoteInput(remoteInput2)
                        .build();

        noti = new Notification.Builder(context)
                .setContentTitle(context.getString(R.string.passenger_name))
                .setContentText(content).setSmallIcon(R.drawable.notification_icon)
                .setContentIntent(pIntent)
                .addAction(action)
                .addAction(action2).build();
    } 

Action2 вызывает action2PendingIntent, а action вызывает action1PendingIntent. Но в моем намерении служба. У меня есть это в моем onHandleIntent:

    final NotificationManager notifManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        notifManager.cancelAll();
        String action = intent.getAction();
        Log.i("", "Received notification action: " + action);
        Bundle bundle = intent.getExtras();
        if (bundle != null) {
            final String id = bundle.getString("id");
            final String tag = bundle.getString("tag");
            Log.i("", "Received notification action: id: " + id + " / tag: " + tag);
}

НО в bundle.getString("тег"); всегда будет возвращать "#business" (тег первого действия, даже если я нажму вторую кнопку. Почему это происходит?

2 ответа

Решение

Благодаря @pskink мне удалось заставить его работать, изменив код запроса для второго ожидающего намерения, например так:

  PendingIntent action2PendingIntent = PendingIntent.getService(context, 2,
        action2Intent, PendingIntent.FLAG_ONE_SHOT);

Использование PendingIntent.FLAG_UPDATE_CURRENT вышеупомянутых флагов помогает в обновлении ожидающего намерения для действия.

Другие вопросы по тегам