Я хочу показать уведомление в определенное время.Поэтому я создал эту функцию:
fun specificTime() {
val _intent = Intent(this, AlarmBroadcastReceiver::class.java)
val pendingIntent = PendingIntent.getBroadcast(this, 0, _intent, 0)
val alarmManager = this.getSystemService(Context.ALARM_SERVICE) as AlarmManager
alarmManager.cancel(pendingIntent)
val calendar = Calendar.getInstance()
calendar.setTimeInMillis(System.currentTimeMillis())
calendar.set(Calendar.HOUR_OF_DAY, 13)
calendar.set(Calendar.MINUTE, 30)
calendar.set(Calendar.SECOND, 0)
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent)
}
Работает отлично.Когда приходит время, приложение показывает уведомление и все хорошо.Проблема в том, что когда я позже снова открою приложение, он снова отобразит уведомление.Я в замешательстве, потому что, как вы можете видеть из функции, я назначил уведомлению определенный час и время, поэтому я не понимаю, почему он снова показывает мне уведомление, даже когда я открываю приложение через 10 минут.Я добавил в Уведомление строку .setOnlyAlertOnce(true)
, но результат тот же.
ОБНОВЛЕНИЕ (1)
Проблема в последней строке функции alarmManager.set(...)
.Документация гласит:
Если указанное время срабатывания истекло, сигнал тревоги будет немедленно активирован.
Я пытался заменить его на alarmManager.setExact(...)
, но результат был тот же.