Uso un allarme per recuperare i dati dal server. Mi piace dare all'utente la possibilità di avviare e interrompere l'allarme. Ciò significa che devo controllare e vedere se l'allarme è già impostato. Ho trovato un po 'di codice che mi dice che se l'allarme è già impostata:Problema AlarmManager Android con impostazione e ripristino di un allarme
Intent I = new Intent(getApplicationContext(),AlarmReceiver.class);
PendingIntent P = PendingIntent.getBroadcast(getApplicationContext(), 0, I, PendingIntent.FLAG_NO_CREATE);
found = (P!=null);
se l'allarme è già impostato a cancellare, ma se non è impostata, allora ho impostato (come un interruttore)
Il problema è che funziona solo una volta. La prima volta che il codice sopra riportato per verificare gli allarmi esistenti restituirà un valore null che indica nessun allarme, ma dopo aver annullato l'allarme una volta che restituisce un puntatore a qualcosa ma l'allarme non è in esecuzione.
Ecco il codice per impostare l'allarme
am = (AlarmManager) getSystemService(getApplicationContext().ALARM_SERVICE);
Intent I = new Intent(getApplicationContext(),AlarmReceiver.class);
PendingIntent P = PendingIntent.getBroadcast(getApplicationContext(), 0, I, PendingIntent.FLAG_CANCEL_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 60000, P);
e qui è il codice per disattivare la sveglia:
am = (AlarmManager) getSystemService(getApplicationContext().ALARM_SERVICE);
Intent I = new Intent(getApplicationContext(),AlarmReceiver.class);
PendingIntent P = PendingIntent.getBroadcast(getApplicationContext(), 0, I, PendingIntent.FLAG_CANCEL_CURRENT);
am.cancel(P);
sono io per reimpostare qualcosa dopo l'annullamento di un allarme per farlo è PendingIntent andare via .
Io non sono davvero sicuro perché si sta eseguendo il controllo per vedere se un allarme è già esistente. Puoi spiegare il tuo ragionamento per favore? –
Volevo avere un pulsante che agisce come un interruttore on/off. Utilizzare anche il pulsante come indicatore se la mia impostazione di allarme è stata persa a causa di crash dell'applicazione. Uso l'allarme per aggiornare un widget quando l'utente fa clic sul widget per aprire un'attività in cui l'utente può vedere se l'allarme è impostato o meno. Ciò di cui ho paura è dopo aver impostato l'allarme che verrà disattivato e l'utente non saprà che è disattivato. – Kemal