代码之家  ›  专栏  ›  技术社区  ›  Tyler

Kotlin AlarmManager和BroadcastReceiver不工作

  •  1
  • Tyler  · 技术社区  · 8 年前

        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)
    

    2 回复  |  直到 8 年前
        1
  •  2
  •   Tyler    8 年前

    我刚注意到我在打电话 getService() 在…上 PendingIntent 而不是 getBroadcast()

    改变后,它工作得很好!

        2
  •  0
  •   CanCoder    5 年前

    除了首选答案外,我还设置了意图的类别,然后它才起作用。请参见以下示例:

    val intent = Intent()
    intent.action = LOCAL_NOTIFICATION
    intent.setClass(context, MyBroadCastReceiver::class.java) //this line
    

    在将意图传递给pendintIntent之前。 希望有帮助