Не перезаписывать существующее уведомление

Для данного идентификатора уведомления возможно (используя стандартные пакеты Android) не устанавливать уведомление, если есть существующее уведомление из приложения?

У меня есть новостное приложение, уведомляющее пользователей о заголовках последних новостей, одним из требований является не перезаписывать последние новости, если пользователь не очистил их или не щелкнул, чтобы просмотреть их.

Я использую SharedPreference, чтобы установить флаг, чтобы выяснить, показываю ли я уже заголовок, а также намерение удалить, которое очистит его. Однако deleteIntent не всегда вызывается, когда пользователь очищает все уведомления.

Заранее спасибо.

Сандип


person Ionic Walrus    schedule 05.10.2010    source источник


Ответы (2)


Для тех, кто следит за этим позже:

Нет простого способа не перезаписать существующий идентификатор уведомления с помощью SDK. Вот как это сделать:

  • используйте логический флаг через SharedPreference, если этот флаг установлен, не пишите уведомление
  • сбросьте этот флаг, когда пользователь «Очистить» все уведомления. Чтобы сделать это, настройте deleteIntent (через службу), убедитесь, что вы сняли этот флаг в onStartCommand() и onStart().
  • опционально сбрасывать флаг при запуске приложения
person Ionic Walrus    schedule 07.10.2010

Если ваше требование:

одно из требований - не перезаписывать экстренные новости, если пользователь не очистил их или не щелкнул, чтобы просмотреть их.

Вы можете использовать NotificationManager для получения списка всех активных уведомлений, опубликованных вашим приложение, использующее getActiveNotifications()

И проверьте, закрыл ли пользователь уведомление или открыл его, и предпримите необходимые действия.

Согласно справочному документу для getActiveNotifications():

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

Надеюсь, поможет.

person harsh201    schedule 05.05.2016