0

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

1 回答 1

0

id用于定位 的 to ,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
}
于 2021-12-02T20:47:51.607 回答