Отложенное намерение (интент) PendingIntent

Android #Android

Используется для запуска активности при щелчке на уведомлении. Приложение передаёт отложенное намерение другим приложениям, чтобы те потом могли позднее отправить интент по поручению нашего приложения.

Шаг 1. Создание явного намерения (интента)

Сначала вы создаёте простой явный интент, предназначенный для активности, которая должна запускаться при щелчке на уведомлении.


Intent intent = new Intent(this, TargetActivity.class);

Шаг 2. Передача намерения построителю стека TaskStackBuilder

Затем мы используем объект TaskStackBuilder, чтобы обеспечить правильную работу кнопки Назад при запуске активности. Объект TaskStackBuilder позволяет работать с историей активностей, используемой кнопкой Назад. Сначала мы получаем стек возврата, относящийся к активности, а затем добавляем в него только что созданное намерение.


TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(this);
taskStackBuilder.addParentStack(TargetActivity.class);
taskStackBuilder.addNextIntent(intent);

Шаг 3. Получение отложенного намерения от TaskStackBuilder

Затем мы получаем отложенное намерение от объекта TaskStackBuilder, используя его метод getPendingIntent(). Метод getPendingIntent() получает два параметра int: код запроса, используемый для идентификации намерения, и флаг, определяющий поведение отложенного намерения. Несколько возможных значений флага:

  • FLAG_CANCEL_CURRENT - если отложенное намерение уже существует, отменить его перед созданием нового.
  • FLAG_NO_CREATE - если подходящее отложенное намерение не существует, то не создавать его и вернуть null.
  • FLAG_ONE_SHOT - отложенный интент может использоваться только один раз.
  • FLAG_UPDATE_CURRENT - если подходящий отложенный интент существует, то оставить его и заменить дополнительные данные данными из нового интента.

В нашем случае будет использоваться значение FLAG_UPDATE_CURRENT для модификации существующего отложенного интента. ```

PendingIntent pendingIntent = taskStackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);


## Шаг 4. Добавление интента в уведомление

Наконец, отложенный интент добавляется в уведомление методом setContentIntent():

notification.setContentIntent(pendingIntent);

Оценка статьи 0

Комментарии

Пока комментариев нет.