【发布时间】:2018-04-24 22:27:37
【问题描述】:
当此闹钟存在时我想取消闹钟
fun isAlarmWorking(context: Context): Boolean {
val intent = PendingIntent.getBroadcast(
context.applicationContext,
ALARM_ID,
createAlarmReceiver(context.applicationContext),
PendingIntent.FLAG_NO_CREATE)
return intent != null
}
fun cancelAlarm(context: Context) {
val intent = PendingIntent.getBroadcast(
context.applicationContext,
ALARM_ID,
createAlarmReceiver(context.applicationContext),
0)
val alarmManager =
context.applicationContext.systemService<AlarmManager>()
alarmManager.cancel(intent)
}
看起来不错
- 我测试
PendingIntent是否与FLAG_NO_CREATE一起存在 - 取消与相同
ALARM_ID的警报
但是当我在真实设备上测试它时
Timber.d("onClick: ${isAlarmWorking(this)}")
cancelAlarm(this)
Timber.d("onCancel: ${isAlarmWorking(this)}")
我明白了
onClick: false
onCancel: true
为什么在调用cancel 后我得到true?
[编辑]我添加后
intent.cancel()
cancelAlarm 结尾的测试结果看起来不错
onClick: false
onCancel: false
所以我知道isAlarmWorking 询问系统中是否有PendingIntent 而不是警报本身,对吗?
【问题讨论】:
标签: android alarmmanager android-pendingintent