У меня есть время, скажем, 01:01, теперь я хочу вызвать два уведомления: первое за пять минут до времени, а второе за две минуты до времени. Вот код, который я написал для этого:
fun setAlarm() {
val time: String = "01:01 AM"
val inFormat3 = SimpleDateFormat("hh:mm")
val date = inFormat3.parse(time)
Log.e("Timeis",date.minutes.toString() + " " + date.hours)
// val df = SimpleDateFormat("HH:mm")
/* val d = df.format(date)*/
val calNow = Calendar.getInstance()
val calSet = calNow.clone() as Calendar
val calSet2 = calNow.clone() as Calendar
// val cal = Calendar.getInstance()
calSet.set(Calendar.HOUR_OF_DAY, date.hours)
calSet.set(Calendar.MINUTE, date.minutes)
calSet.set(Calendar.SECOND, 0)
calSet.set(Calendar.MILLISECOND,0)
calSet2.set(Calendar.HOUR_OF_DAY, date.hours)
calSet2.set(Calendar.MINUTE, date.minutes)
calSet2.set(Calendar.SECOND, 0)
calSet2.set(Calendar.MILLISECOND,0)
calSet.add(Calendar.MINUTE,-5)
calSet2.add(Calendar.MINUTE,-2)
if (calSet.compareTo(calNow) <= 0){
//Today Set time passed, count to tomorrow
calSet.add(Calendar.DATE, 1);
}
if (calSet2.compareTo(calNow) <= 0){
//Today Set time passed, count to tomorrow
calSet2.add(Calendar.DATE, 1);
}
val intent = Intent(this, AlarmReceiver::class.java)
intent.putExtra("NotificationText", "some text")
val pendingIntent = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT)
val PendingIntent2 = PendingIntent.getBroadcast(this,2,intent,PendingIntent.FLAG_UPDATE_CURRENT)
val alarmManager = this.getSystemService(Context.ALARM_SERVICE) as AlarmManager
val alarmManager2 = this.getSystemService(Context.ALARM_SERVICE) as AlarmManager
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calSet.getTimeInMillis(), 24*60*60*1000,pendingIntent)
alarmManager2.setRepeating(AlarmManager.RTC_WAKEUP,calSet2.getTimeInMillis(),24*60*60*1000,PendingIntent2)
}
Теперь уведомление запускается только за 5 минут, а не за 2 минуты до уведомления. Что я здесь делаю не так?
Заранее спасибо.
Кроме того, это может быть просто странное совпадение, но ваш PendingIntent2 синий и заглавные. Попробуйте установить это в нижний регистр. Я сомневаюсь, что это сработает, но это выглядит так странно, учитывая, что синим цветом обозначены классы Android.
Привет, @Pavneet_Singh. Я удалил первое уведомление, но второе не приходит.
@cjnash идет второй, но он обновляет первый, как я могу его остановить?
Что вы имеете в виду под своим последним комментарием «идет второй, но он обновляет первый»?
попробуйте удалить первое уведомление и посмотрите, придет ли второе снова или нет