我试图用AlarmManager设置闹钟,但我的BroadcastReceiver永远不会被调用。这是我的片段。
val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
//Never gets hit
}
}
context.registerReceiver(receiver, IntentFilter(LOCAL_NOTIFICATION))
val intent = Intent()
intent.action = LOCAL_NOTIFICATION
val alarmManager = context.getSystemService(ALARM_SERVICE) as? AlarmManager
val pendingIntent = PendingIntent.getService(context, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT)
val calendar = Calendar.getInstance()
calendar.add(Calendar.SECOND, 10)
alarmManager?.set(AlarmManager.RTC_WAKEUP, calendar.timeInMillis, pendingIntent)
我已尝试在AndroidManifest.xml中注册广播接收器,但似乎没有任何效果。
答案 0 :(得分:2)
我刚注意到我在getService()
而不是PendingIntent
getBroadcast()
更改后,它完美无缺!
答案 1 :(得分:0)
除了首选答案外,我还在意图之前设置了意图的类别。请参见下面的示例:
val intent = Intent()
intent.action = LOCAL_NOTIFICATION
intent.setClass(context, MyBroadCastReceiver::class.java) //this line
在将意图传递给pendintIntent之前。 希望对您有帮助