Quiero repetir mi tarea todos los lunes a las 09:00 AM & 05:00 PM. Usé el siguiente código para eso, pero no puedo repetir la tarea. CódigoRepetir alarmas todos los lunes en Android usig AlarmManager/BroadcastReceiver
Actividad: -
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 [email protected] :== " + calendar.getTime());
long interval = calendar.getTimeInMillis() + 604800000L;
System.out.println("Next Millis = " + interval);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), interval, pendingIntent);
}
}
Nota: - Conté intervalo basado en 86400000 * 7 = 604 800 000;
receptor: -
public class MyScheduledReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
System.out.println("Receiver");
}
}
Si alguien tiene alguna idea por favor amablemente ayudar. Gracias
Haga la prueba y comprobar los lunes día 2 o 1 dudo de que, de lo contrario Realmente no veo mucho cualquier problema en su código, que puede ser su en su prueba, después de establecer esta alarma cambia el dispositivo de tiempo/emulador 9 AM y la fecha del próximo lunes ... y eso disparará la alarma, estoy seguro. – MKJParekh
Tengo el problema. Está en intervalo. En lugar de intervalo, utilicé AlarmManager.INTERVAL_DAY * 7 en el método setRepeating. – Scorpion