如何取消使用 setAlarmClock() 设置的闹钟 Android

How to cancel alarm set with setAlarmClock() Android

如何取消使用 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)

id用来定位PendingIntent,下面是我的例子:

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
}
  • 有益阅读: