【发布时间】:2020-09-09 16:23:08
【问题描述】:
我正在课堂上制作一个基本的 android/kotlin 警报应用程序。一旦触发警报,我希望能够从 SQLite 数据库中删除警报,或者如果它是重复警报,则重新设置警报。对于这两者,我需要来自 pendingIntent 的 requestCode,因为我使用数据库中警报的主键作为 requestCode。 我不是唯一想要这个的人,解决方案似乎是使用 Intent.putExtras(),但我的意图不是这样设置的:
var intentName = when (newAlarmFrequency){
"Once" -> "alarmTask"
"Daily" -> "alarmTaskDaily"
"Weekly" -> "alarmTaskWeekly"
else -> null
}
然后像这样传递到 pi 中:
val pi = PendingIntent.getBroadcast(this, newAlarmID.toInt(), Intent(intentName), PendingIntent.FLAG_UPDATE_CURRENT)
稍后会这样处理:
val receiver = object: BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
when (intent?.action) {
"alarmTask" -> handleAlarm(0)
"alarmTaskDaily" -> handleAlarm(1)
"alarmTaskWeekly" -> handleAlarm(2)
}
}
}
val filter = IntentFilter().apply {
addAction("alarmTask")
addAction("alarmTaskDaily")
addAction("alarmTaskWeekly")
}
registerReceiver(receiver, filter)
有没有办法按照我的方式完成这项工作,或者我是否需要更改设置 Intent 的方式?
【问题讨论】:
标签: android kotlin android-intent alarmmanager android-pendingintent