How to cancel alarm set with setAlarmClock() Android

242 Views Asked by At

How can I cancel an alarm set with setAlarmClock()?

val alarmReceiver = Intent(applicationContext, AlarmReceiver::class.java)
val alarmReceiverPi = PendingIntent.getBroadcast(applicationContext, 0, alarmReceiver, 0)

val alarmInfo = AlarmManager.AlarmClockInfo(time, alarmReceiverPi)

alarmManager.setAlarmClock(alarmInfo, alarmReceiverPi)
1

There are 1 best solutions below

1
On BEST ANSWER

The id to used to locate the PendingIntent, following is my example:

fun setAlarm() {
    val alarmPendingIntent = getAlarmPendingIntent(alarmId)

    alarmManager.setExact(AlarmManager.RTC_WAKEUP, _timeLong.value, alarmPendingIntent)

    showToast("Alarm has been set")
}

fun cancelAlarm() {
    val alarmPendingIntent = getAlarmPendingIntent(alarmId)

    alarmManager.cancel(alarmPendingIntent) 

    showToast("Alarm has bee canceled")
}

private fun getAlarmPendingIntent(id: Long): PendingIntent {
    val intent = Intent(getApplication(), AlarmReceiver::class.java)

    return PendingIntent.getBroadcast(getApplication(), id.toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT)  //will override if same id
}