7

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

+0

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

+0

Tengo el problema. Está en intervalo. En lugar de intervalo, utilicé AlarmManager.INTERVAL_DAY * 7 en el método setRepeating. – Scorpion

Respuesta

12

Quite la variable de intervalo y use lo siguiente en lugar de eso.

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

si necesita alarmarlo de lunes a viernes para saber cómo hacerlo para el método setRepeating? –

+1

Luego, configure la alarma repitiendo todos los días y en Recibir verificación el día actual. Si está sentado o el sol, ignóralo. – Vikram

Cuestiones relacionadas