45 votos

Android: Haz PendingIntents todos con AlarmManager

Yo estoy puesta una alarma como esta:

alarmManager.set(AlarmManager.RTC_WAKEUP, alarmTime, pendingEvent);

Estoy interesado en la eliminación de todas las alarmas que donde previamente establecidas, les claro.

¿Hay una manera para mí para hacerlo o para obtener todas las alarmas que se establecen actualmente que puedo borrarlos manualmente?

Gracias,

64voto

gilsaints88 Puntos 495

Usted no tiene que mantener la referencia a él. Basta con definir un nuevo PendingIntent como exactamente el que usted definió en la creación.

Por ejemplo:

si he creado un PendingIntent a ser despedido por el AlarmManager como este:

   Intent alarmIntent = new (getApplicationContext(), AlarmBroadcastReceiver.class);
    alarmIntent.setData(Uri.parse("custom://" + alarm.ID));
    alarmIntent.setAction(String.valueOf(alarm.ID));
    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

    PendingIntent displayIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, alarmIntent, 0);

    alarmManager.set(AlarmManager.RTC_WAKEUP, alarmDateTime, displayIntent);

Entonces en algún lugar en su otro código (incluso otra actividad) puede hacer esto para cancelar:

Intent alarmIntent = new (getApplicationContext(), AlarmBroadcastReceiver.class);
alarmIntent.setData(Uri.parse("custom://" + alarm.ID));
alarmIntent.setAction(String.valueOf(alarm.ID));
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

PendingIntent displayIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, alarmIntent, 0);

alarmManager.cancel(displayIntent);

Lo importante aquí es establecer el PendingIntent con exactamente los mismos datos y de acción, y otros criterios como indican aquí http://developer.android.com/reference/android/app/AlarmManager.html#cancel%28android.app.PendingIntent%29

41voto

Alex Volovoy Puntos 34562

Usted necesita crear su intención pendiente y luego cancelarla

 AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

    Intent updateServiceIntent = new Intent(context, MyPendingIntentService.class);
    PendingIntent pendingUpdateIntent = PendingIntent.getService(context, 0, updateServiceIntent, 0);

    // Cancel alarms
    try {
        alarmManager.cancel(pendingUpdateIntent);
    } catch (Exception e) {
        Log.e(TAG, "AlarmManager update was not canceled. " + e.toString());
    }

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X