【发布时间】:2017-12-18 12:42:18
【问题描述】:
我正在努力让待处理的意图/警报管理器正常工作。我相信我让它正常工作,但后来我向库中添加了一些“aar”文件,并且不得不重做 gradle,这似乎打破了我的基本警报。
private void setAlarm(int hour, int min, Calendar cal, Intent intent) {
Log.d(TAG, "Hello, we made it for " + hour + min);
// cal = Calendar.getInstance();
// cal.setTimeInMillis(System.currentTimeMillis());
cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, min);
cal.set(Calendar.SECOND, 0);
Log.e("MainActivity", "Hello - timer after - " + cal.getTime());
intent.putExtra("extra", "yes");
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis() , pendingIntent);
Toast.makeText(this, "Alarm set", Toast.LENGTH_LONG).show();
}
那是我用来触发警报的 sn-p。意图链接到另一个触发警报的类。
【问题讨论】:
-
如果您设置了过去时间的警报,那么它会立即触发。调试日历实例。
-
使用 cal.add 代替 cal.set。添加:将给定的金额添加到日历字段。
-
我传递的参数是从前一个函数的日历中获取的。此外,待处理意图之前的日志具有我想要警报的确切时间,但在此之前触发。所以我不认为这是过去的时间。
-
@NoiseGenerator setExact 已修复!!谢谢你。这就解释了为什么它有时会工作,然后第二天突然就不行了。如果它已经过去,我现在正在考虑增加这一天。最终我想为一周设置它,但我仍在学习,所以我应该一点一点地接受它。
-
如果时间已经到了,设法增加一天。简单的“if”语句。
标签: java android android-intent alarmmanager android-pendingintent