Я могу ставить в очередь и запускать уведомления через AlarmManager, я также могу запускать свое приложение, щелкнув уведомление. К сожалению, уведомление не удаляется при запуске приложения.
Настройка уведомлений:
Intent intent = new Intent(mainActivity, NotificationPublisher.class);
intent.setAction("handle");
PendingIntent pIntent = PendingIntent.getBroadcast(mainActivity, 0, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
Notification.Builder builder = new Notification.Builder(mainActivity)
.setSmallIcon(R.drawable.phone)
.setContentTitle(title)
.setContentText(textContent)
.setAutoCancel(true)
.setContentIntent(pIntent);
return builder.getNotification();
При нажатии на уведомление передается широковещательная передача и выполняется эта функция:
void handle(Context context, Intent intent) {
System.out.println("handle");
Context mainContext = Extension.mainContext;
Activity mainActivity = Extension.mainActivity;
Intent launchIntent = new Intent(mainContext, mainActivity.getClass());
launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(launchIntent);
}
Функция дескриптора запустит действие, но не удалит уведомление из строки состояния. Интересно ... Если я уберу вызов startActivity, уведомление закроется.
Вещи, которые я пробовал:
- Установка флага автоматической отмены вручную
- Вместо этого используйте builder.build ()
- NotificationManger отмена (id) и / или cancelAll
- Использование NotificationCompat.Builder
- Использование обычного намерения запуска для setContentIntent вместо ручного вызова startActivity
cancel (int id)
? Думаю, есть 4 способа удалить любые уведомления: 1. пользователь отклоняет их 2. setAutocancel 3.cancel (int id)
иcancelALL
И я думаю, вы не используетеNotification.FLAG_ONGOING_EVENT
флаг .. Верно? Всего одно предложение: попробуйтеcancel (int id)
из своегоhandle
метода, чтобы явно удалить его - person AADProgramming   schedule 07.02.2015