【问题标题】:How to cancel alarm set with setAlarmClock() Android如何取消使用 setAlarmClock() Android 设置的闹钟
【发布时间】:2021-12-02 20:02:04
【问题描述】:

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

【问题讨论】:

    标签: android alarmmanager android-alarms setalarmclock


    【解决方案1】:

    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
    }
    

    【讨论】:

    • 非常感谢,我的问题是我使用了不同的请求代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多