public void alarmUpdateForEveryDay(Context context) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, NewDayReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 50, intent, PendingIntent.FLAG_IMMUTABLE);
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
if (System.currentTimeMillis() > c.getTimeInMillis()) {
c.add(Calendar.DAY_OF_MONTH, 1); // Add 1 day
}
long midnight = c.getTimeInMillis();
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, midnight, AlarmManager.INTERVAL_DAY, pendingIntent);
Log.d("current_time", new Date(midnight).toString());
}
I test with adjust the system time
Please take a look at the documentation note
You should use
setExact
and create a repeating mechanism in your app