这个非常愚蠢的错误非常奇怪。我想在特定日期的特定时间发送通知。实际可行-当我不使用变量时。要理解我的意思,只需看下面的代码:
// 28.08.2019 at 00:01 AM
calendar.set(Calendar.DAY_OF_MONTH, 28)
calendar.set(Calendar.MONTH, 7)
calendar.set(Calendar.YEAR, 2019)
calendar.set(Calendar.HOUR_OF_DAY, 0)
calendar.set(Calendar.MINUTE, 0)
calendar.set(Calendar.SECOND, 1)
请记住:月份从0开始,因此对于实际月份,我需要使用 7 。如我所说,使用此代码可以正常工作。但是现在我为月份和日期声明一个变量,所以:
// day = 28
val dayNoti = day
// month = 8
val monthNoti = month - 1
// 28.08.2019 at 00:01 AM
calendar.set(Calendar.DAY_OF_MONTH, dayNoti)
calendar.set(Calendar.MONTH, monthNoti)
calendar.set(Calendar.YEAR, 2019)
calendar.set(Calendar.HOUR_OF_DAY, 0)
calendar.set(Calendar.MINUTE, 0)
calendar.set(Calendar.SECOND, 1)
它不起作用!太烦人了。我不知道为什么会这样。顺便说一句:我需要声明此变量,因为代码部分在一个函数中,并且我多次使用不同的值调用该函数。
编辑(1):
这是完整的功能:
// IMPORTANT: Before I'm calling the function, I did already 'month - 1'. It's the same result: it doesn't work
fun notification(hour: Int, minute: Int, day: Int, month: Int) {
val titleNotification: String
val descNotification: String
val _intent = Intent(this, AlarmBroadcastReceiver::class.java)
_intent.putExtra("dataNotification_title", titleNotification)
_intent.putExtra("dataNotification_desc", descNotification)
val randomCode = 7015
val pendingIntent = PendingIntent.getBroadcast(this, randomCode, _intent, 0)
val alarmManager = this.getSystemService(Context.ALARM_SERVICE) as AlarmManager
val calendar = Calendar.getInstance()
calendar.timeInMillis = System.currentTimeMillis()
calendar.set(Calendar.DAY_OF_MONTH, day)
calendar.set(Calendar.MONTH, month)
calendar.set(Calendar.YEAR, 2019)
calendar.set(Calendar.HOUR_OF_DAY, hour)
calendar.set(Calendar.MINUTE, minute)
calendar.set(Calendar.SECOND, 0)
if (System.currentTimeMillis() < calendar.timeInMillis){
timeUntilAlert = calendar.timeInMillis
alarmManager.setExact(AlarmManager.RTC_WAKEUP, timeUntilAlert, pendingIntent)
}
}
答案 0 :(得分:0)
我找到了“解决方案”。一切都很好,错误是我在for循环中调用了通知功能,但我忘记为每个通知更改randomCode
。每个函数都有特定的值,但是randomCode
的{{1}}是相同的,这就是它不起作用的原因。
之所以没有变量就可以工作,是因为我将函数称为独立的,没有for循环。
但是,感谢大家。我的愚蠢错误。