Dans l'activité principale de mon application, il y a deux champs de texte où les utilisateurs insèrent la date et l'heure et un bouton démarre. Lorsque le bouton Démarrer est cliqué, il appelle la méthode setProgrammedTimer de la classe broadcastReceiver qui définit une alarme à la date et l'heure insérées par les utilisateurs et à ces date et heure, l'application appelle le téléphone d'activité DIAL. Mais si j'insère une date et une fois et je clique sur le bouton de démarrage, et après j'insère une nouvelle date et heure et je clique sur le bouton de démarrage, l'application exécute seulement la deuxième alarme. comment puis-je faire pour exécuter les deux alarmes?comment régler plusieurs alarmes dans Android pour effectuer des opérations basées sur le temps en dehors de la durée de vie de mon application?
Ce bouton code de démarrage de l'activité principale:
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
year = Integer.valueOf(yearT.getText().toString());
month = Integer.valueOf(monthT.getText().toString());
day = Integer.valueOf(dayT.getText().toString());
hour = Integer.valueOf(hourT.getText().toString());
minute = Integer.valueOf(minuteT.getText().toString());
timer.setProgrammedTimer(context,year,month,day,hour,minute);
Ceci est le code BroadcastReceiver:
public class TimerBroadcast extends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wl.acquire();
Intent callIntent = new Intent(Intent.ACTION_DIAL);
callIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(callIntent);
wl.release();
}
public void setProgrammedTimer(Context context,int year, int month,int day, int hour, int minute){
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context,TimerBroadcast.class);
PendingIntent pi = PendingIntent.getBroadcast(context,0,intent, PendingIntent.FLAG_CANCEL_CURRENT);
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
cal.set(Calendar.YEAR,anno);
cal.set(Calendar.MONTH,mese-1);
cal.set(Calendar.DAY_OF_MONTH,giorno);
cal.set(Calendar.HOUR_OF_DAY,ora);
cal.set(Calendar.MINUTE,minuti);
cal.set(Calendar.SECOND,0);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pi);
}
alors je dois enlever ce drapeau et cela fonctionne? – paniko
pourquoi demander ici? essayez-le vous-même. – Okas