0

安卓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);

当我设置日期时间而只添加几秒钟时,它可以完美运行

但是,当我确实设置了日期和时间(我从不同的活动中获取数据作为答案)时,它不起作用,我三次检查我得到的数据是否正确。

关于我做错了什么的任何建议?

4

1 回答 1

3

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

当我不设置日期和时间而只添加几秒钟时,它可以完美运行。

您在变量 like 中获得不同的值month,date,year并将它们设置为Calendar对象。

仅供参考:日历对象需要几个月,因为 January = 0 和 December = 11 ,

而且我怀疑您是否将它们设置为Jan=1 和 Dec=12,因此您未知地在警报中设置了下个月的日期以触发。

检查你得到的月份的价值并申请cal.set(Calendar.MONTH, month-1);,然后它就会起作用。


如果您已经在循环中编写了警报代码,那么请注意每次都传递唯一的 idPendingIntent而不是一个静态值。

于 2012-07-02T12:43:08.860 回答