【发布时间】:2018-03-02 16:49:47
【问题描述】:
您好,我正在尝试创建一个挂起的 Intent,该 Intent 的 Intent Extras 中包含一个枚举,它通过警报管理器启动一个广播接收器,但是当我试图让该枚举说它为空时,我的代码在广播接收器上崩溃了?
下面是我的代码
val calendar = Calendar.getInstance()
calendar.timeInMillis = System.currentTimeMillis()
val intent = Intent(context, ClearDataReceiver::class.java)
intent.action = "clear data"
intent.putExtra(ClearDataReceiver.DATA_TYPE_EXTRA, DataType.CUSTOMER_DETAILS )
val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.timeInMillis, 60 * 1, pendingIntent)
广播接收者
override fun onReceive(context: Context?, intent: Intent?) {
super.onReceive(context, intent)
var bundle = intent!!.extras
val dataType = bundle.getSerializable(DATA_TYPE_EXTRA) as DataType
when(dataType){
DataType.BALANCE -> storage.clearCurrentBalance()
DataType.CARD_NUMBER -> storage.clearardNumber()
DataType.CUSTOMER_DETAILS -> storage.clearUserDetails()
}
}
【问题讨论】:
-
是的,当我在这里复制代码时,这是一个错字。现在修改
-
使用
PendingIntent.FLAG_UPDATE_CURRENT代替0作为getBroadcast()的最后一个参数,看看是否有帮助。 -
仍然没有包含额外的内容。连设定的动作值都丢失了!?!!?
标签: android kotlin broadcastreceiver alarmmanager