Puedo crear y cancelar una alarma con el siguiente código. Quiero crear más de una alarma. Los tiempos de alarma provienen de una lista de arrays. En esta lista de arrays, me gustaría crear una alarma para cada fecha. Y presionando el botón cancelar cancelará solo la alarma actual. ¿Cómo puedo hacerlo?¿Cómo se puede crear más de una alarma?
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
setOneTimeAlarm();
buttonCancel.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View arg0) {
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
// Tell the user about what we did.
Toast.makeText(MainActivity.this, "Cancel!", Toast.LENGTH_LONG).show();
}
});
}
private void setOneTimeAlarm() {
Intent intent = new Intent(this, AReceiver.class);
pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
Gracias a la respuesta de David, pero no entiendo cómo lista de fechas en AlarmManager pondré. – realuser
¿Por qué quieres una lista? Esto crea varias alarmas diferentes, simplemente ponga diferentes valores en el objeto de calendario. Guardo una referencia de todas las alarmas en una base de datos local para poder mostrarlas y cancelarlas todas. Recorra y llame a alarmmanager.set en varios o ¿qué quiere decir exactamente? –
Creo que tengo el mismo problema. Tengo servicio desde donde configuré las alarmas. Si configuro más de una alarma, solo funciona la última. Entonces no lo entiendo: si quiero configurar más de una alarma, ¿debo usar ID o las ID son solo para cancelar mi propósito? – Mario