I want to send a Broadcast at an specific time a day. I wrote some code, but the Calendar returns a wrong Date and the Broadcast does an infinite Loop. What have I done wrong?
Boolean static1Active = prefs.getBoolean("static_switch1", true);
Log.i("HHG", "Static1? " + (INTENT_TYP.equals("static1") && static1Active));
if(INTENT_TYP.equals("static1") && static1Active){
String check_time1 = prefs.getString("check_time1", "6:0");
String[] pieces=check_time1.split(":");
Integer hour = Integer.parseInt(pieces[0]);
Integer minute = Integer.parseInt(pieces[1]);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, Calendar.MONTH, Calendar.DATE, hour, minute);
Log.i("HHG","Calendar: " +calendar.getTime());
Intent static1 = new Intent(context, VertretungCheck.class);
static1.putExtra("typ", "static1");
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 1, static1, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
The right code is this:
Calendar calendar = Calendar.getInstance();
calendar.getTime();
calendar.add(Calendar.DAY_OF_MONTH, 1);
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), hour, minute);