PendingIntent работает правильно на первое уведомление, но неправильно на остальных

  protected void displayNotification(String response) {
    Intent intent = new Intent(context, testActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, Intent.FLAG_ACTIVITY_NEW_TASK);

    Notification notification = new Notification(R.drawable.icon, "Upload Started", System.currentTimeMillis());
    notification.setLatestEventInfo(context, "Upload", response, pendingIntent);

    nManager.notify((int)System.currentTimeMillis(), notification);
}

Эта функция будет вызвана многократно. Я хотел бы за каждого notification запустить testActivity при нажатии. К сожалению, только первое уведомление запускает testActivity. Нажатие на остальных заставляет окно уведомления минимизировать.

Дополнительная информация: Функция displayNotification() находится в названном классе UploadManager. Context передается в UploadManager от activity это инстанцирует. Функция displayNotification() назван многократно от функции, также в UploadManager, который работает в AsyncTask.

Редактирование 1: Я забыл упоминать, что я передаю Строковый ответ в Intent intent как extra.

  protected void displayNotification(String response) {
    Intent intent = new Intent(context, testActivity.class);
    intent.putExtra("response", response);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

Это имеет большое значение, потому что мне нужен дополнительный "ответ" для отражения то, чем состоял в том Строковый ответ, когда уведомление было создано. Вместо этого использование PendingIntent.FLAG_UPDATE_CURRENT, дополнительный "ответ" отражает то, к чему Строковый ответ был на последней возможности displayNotification().

Я знаю, почему это от чтения документации относительно FLAG_UPDATE_CURRENT. Однако я не уверен, как работать вокруг этого в данный момент.

85
задан Kapil Rajput 30 March 2017 в 08:51
поделиться

2 ответа

Не используйте Intent.FLAG_ACTIVITY_NEW_TASK для PendingIntent.getActivity, используйте вместо него FLAG_ONE_SHOT


Скопировано из комментариев:

Затем установите какое-нибудь фиктивное действие для Intent, иначе дополнительные функции будут отброшены. Например

intent.setAction(Long.toString(System.currentTimeMillis()))
119
ответ дан 24 November 2019 в 08:09
поделиться

У меня была та же проблема, и я смог исправить ее, изменив флаг на:

PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
13
ответ дан 24 November 2019 в 08:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: