Repeat alarms every Monday in Android using AlarmManager / BroadcastReceiver

I want to repeat my task every Monday at 09:00 and 17:00. For this, I used the following code, but I cannot repeat the task.

Activity Code:

public class AndroidScheduledActivity extends Activity { /** Called when the activity is first created. */ int id = 115; Intent myIntent; PendingIntent pendingIntent; AlarmManager alarmManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button buttonStart = (Button)findViewById(R.id.start); myIntent = new Intent(getBaseContext(), MyScheduledReceiver.class); myIntent.putExtra("id", id); pendingIntent = PendingIntent.getBroadcast(getBaseContext(), id, myIntent, 0); alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); buttonStart.setOnClickListener(new Button.OnClickListener(){ public void onClick(View arg0) { // TODO Auto-generated method stub setForMonday(); finish(); }}); } public void setForMonday() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_WEEK,2); calendar.set(Calendar.HOUR,09); calendar.set(Calendar.MINUTE, 00); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); System.out.println("Old is set@ :== " + calendar.getTime()); long interval = calendar.getTimeInMillis() + 604800000L; System.out.println("Next Millis = " + interval); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), interval, pendingIntent); } } 

Note: I calculated the interval based on 86400000 * 7 = 604800000;

Recipient:

 public class MyScheduledReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub System.out.println("Receiver"); } } 
+7
source share
1 answer

Change the interval variable and use the following instead.

 alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY * 7, pendingIntent); 
+12
source

All Articles