0

i'm trying to set alarm for yearly events with this code

MyAlarmReceiver.java

mAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
              
Intent intent1 = new Intent(context, AlarmReceiver.class);
intent1.putExtra(ReminderEditActivity.EXTRA_REMINDER_ID, Integer.toString(mReceivedID));
mPendingIntent = PendingIntent.getBroadcast(context, mReceivedID, intent1, PendingIntent.FLAG_CANCEL_CURRENT);

Calendar calendar = Calendar.getInstance();
GregorianCalendar cal = (GregorianCalendar) GregorianCalendar.getInstance();

if(cal.isLeapYear(calendar.get(Calendar.YEAR))) {
    mAlarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,
         calendar.getTimeInMillis() + (86400000L*366), mPendingIntent);
} else {
    mAlarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,
         calendar.getTimeInMillis() + (86400000L*365), mPendingIntent);}
}

But it only works with 365 days even the year is definitely a leap year?

Software Engineer
  • 15,457
  • 7
  • 74
  • 102
sai
  • 9
  • 3
  • Wonderful resource that may help you. `https://stackoverflow.com/questions/1082437/android-how-to-use-alarmmanager` – Nadeem Taj Oct 19 '21 at 07:18
  • Thank you but I already know that. My code worked but it didn't work my way. These codes cal.isLeapYear(calendar.get(Calendar.YEAR)) seem to always return false value for some strange reason. Anyone can help me on this. – sai Oct 19 '21 at 08:36

0 Answers0