通知不适用于变量(Android)

时间:2019-08-27 14:14:29

标签: android notifications android-notifications

这个非常愚蠢的错误非常奇怪。我想在特定日期的特定时间发送通知。实际可行-当我不使用变量时。要理解我的意思,只需看下面的代码:

// 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)
    }
}

1 个答案:

答案 0 :(得分:0)

我找到了“解决方案”。一切都很好,错误是我在for循环中调用了通知功能,但我忘记为每个通知更改randomCode。每个函数都有特定的值,但是randomCode的{​​{1}}是相同的,这就是它不起作用的原因。

之所以没有变量就可以工作,是因为我将函数称为独立的,没有for循环。

但是,感谢大家。我的愚蠢错误。