Java 如何为特定日期、小时、分钟和秒设置AlarmManager
警报在指定时间不工作 (2018年12月20日,12:10:02) 这个代码有什么问题Java 如何为特定日期、小时、分钟和秒设置AlarmManager,java,android,datetime,time,java-time,Java,Android,Datetime,Time,Java Time,警报在指定时间不工作 (2018年12月20日,12:10:02) 这个代码有什么问题 Calendar c = Calendar.getInstance(); c.set(Calendar.MONTH,12); c.set(Calendar.YEAR,2018); c.set(Calendar.DAY_OF_MONTH,20); c.set(Calendar.HOUR_OF_DAY,12); c.set(Calendar.MINUTE,10); c.set(Calendar.SECOND,2)
Calendar c = Calendar.getInstance();
c.set(Calendar.MONTH,12);
c.set(Calendar.YEAR,2018);
c.set(Calendar.DAY_OF_MONTH,20);
c.set(Calendar.HOUR_OF_DAY,12);
c.set(Calendar.MINUTE,10);
c.set(Calendar.SECOND,2);
Intent intent = new Intent(ProfileList.this, IntentBroadcastedReceiver.class);
PendingIntent pintent = PendingIntent.getService(ProfileList.this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), 30*1000, pintent);
改用
java.time
api:
LocalDateTime用于表示日期和时间的组合
有关数据,请参阅本指南:
对于早于26的Android,使用ThreeTenABP项目,该项目将ThreeTen Backport项目进行了调整,该项目将java.time的大部分功能向后移植到java 6和7。使用
java.time
api:
LocalDateTime用于表示日期和时间的组合
有关数据,请参阅本指南:
对于26岁之前的Android,使用ThreeTenABP项目,该项目将ThreeTen Backport项目进行了调整,该项目将java.time的大部分功能向后移植到java 6和7。我知道了,从0开始的一个月。应该是:
c.set(Calendar.MONTH,11); //December
我知道了,月从0开始。应该是:
c.set(Calendar.MONTH,11); //December
以下代码适用于我:
// for Alarm 15/09/2018 at 12.00
Calendar myAlarmDate = Calendar.getInstance();
myAlarmDate.setTimeInMillis(System.currentTimeMillis());
myAlarmDate.set(2012, 09, 15, 12, 00, 0);
AlarmManager alarmManager = (AlarmManager)
context.getSystemService(Context.ALARM_SERVICE);
Intent _myIntent = new Intent(context,AlarmReceiverNotificationForEveryMonth.class);
_myIntent.putExtra("MyMessage","HERE I AM PASSING THEPERTICULAR MESSAGE WHICH SHOULD BE SHOW ON RECEIVER OF ALARM");
PendingIntent _myPendingIntent = PendingIntent.getBroadcast(context, 123, _myIntent,PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.set(AlarmManager.RTC_WAKEUP, myAlarmDate.getTimeInMillis(),_myPendingIntent);
希望它能对您有所帮助。以下代码适用于我:
// for Alarm 15/09/2018 at 12.00
Calendar myAlarmDate = Calendar.getInstance();
myAlarmDate.setTimeInMillis(System.currentTimeMillis());
myAlarmDate.set(2012, 09, 15, 12, 00, 0);
AlarmManager alarmManager = (AlarmManager)
context.getSystemService(Context.ALARM_SERVICE);
Intent _myIntent = new Intent(context,AlarmReceiverNotificationForEveryMonth.class);
_myIntent.putExtra("MyMessage","HERE I AM PASSING THEPERTICULAR MESSAGE WHICH SHOULD BE SHOW ON RECEIVER OF ALARM");
PendingIntent _myPendingIntent = PendingIntent.getBroadcast(context, 123, _myIntent,PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.set(AlarmManager.RTC_WAKEUP, myAlarmDate.getTimeInMillis(),_myPendingIntent);
希望对您有所帮助。什么不起作用?在标题中,您提到了alarm manager,但您的代码仅包括Calendar实例。您当前的代码中是否缺少一些部分,我们可以了解完整情况?这里也回答了同样的问题@鲁格韦德说,这个问题是8年前提出的。从那时起,一个更好的api被引入了。@ruggedmara似乎问题在于设置日历时什么不起作用?在标题中,您提到了alarm manager,但您的代码仅包括Calendar实例。您当前的代码中是否缺少一些部分,我们可以了解完整情况?这里也回答了同样的问题@鲁格韦德说,这个问题是8年前提出的。从那时起,一个更好的api被引入了。@rugfedmara问题似乎是在设置日历时为什么不使用日历。12月?这是一个问题,不,这是旧的和过时的
日历类的两个问题:(1)它使用基于0的月份(2)对于标准设置,当您将月份或任何其他字段设置为无效值时,它不会反对。而是使用java.time
。请看。为什么不使用Calendar.DECEMBER?这是一个,不,这是旧的和过时的Calendar
类的两个问题:(1)它使用基于0的月份(2)标准设置,当您将月份或任何其他字段设置为无效值时,它不会反对。而是使用java.time
。看见