我想在此警报存在时取消警报
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
但是没有报警本身,我是对的吗?
答案 0 :(得分:0)
是。 isAlarmWorking
中的代码只会检查是否存在与您指定的PendingIntent
匹配的PendingIntent
。它不会检查是否设置了PendingIntent
的警报。