如何在动态日期和时间设置闹钟?

时间:2012-07-02 12:20:09

标签: android alarmmanager android-alarms

Android 2.1

代码:

Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
cal.set(Calendar.DAY_OF_MONTH, day);
cal.set(Calendar.HOUR, hour);
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);

Intent intent = new Intent(this, AlarmReceiver.class);
intent.putExtra("message", header);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 234324243, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);

当我设置日期时间时,只需添加几秒就可以完美地运行

但是当我确定日期和时间时间(我将数据作为来自不同活动的答案),它不起作用,我发现我检查的数据是正确的。

对我做错的任何建议?

1 个答案:

答案 0 :(得分:3)

我认为这可能是您所说的代码中唯一的问题,

  

当我没有设定日期&时间,只需添加几秒即可   完美。

您在month,date,year等变量中获取不同的值,并将其设置为Calendar对象。

仅供参考:日历对象需要数月,因为1月= 0和12月= 11,

我怀疑你是以 Jan = 1和Dec = 12 得到它们,所以你不知道设置警报中下个月的日期来触发。

检查月份的值,然后应用cal.set(Calendar.MONTH, month-1);然后它将起作用。


如果您已经在循环中编写了警报代码,那么请务必每次在PendingIntent而不是一个静态值时传递唯一ID。