Search code examples
androidalarmmanager

Android : Unable to cancel alarm using AlarmManager


This is what I am using to set a alarm and it is visible when I fetch all the alarms set in the device.

    /**
     * Set alarm
     **/


    Intent alarmIntent = new Intent(context, LocalReminderReceiver.class);
    AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    long time = Long.valueOf("1526112720000");
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 1, alarmIntent, FLAG_UPDATE_CURRENT);
    manager.set(AlarmManager.RTC_WAKEUP, time, pendingIntent);

    /**
     * Cancel alarm
     */
    PendingIntent sender = PendingIntent.getBroadcast(context, 1, alarmIntent, PendingIntent.FLAG_CANCEL_CURRENT);
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    alarmManager.cancel(sender);
    sender.cancel();

Am I missing something?


Solution

  • To set alarm use below line

     Intent intent = new Intent(context, AlarmReceiverActivity.class);
    
     PendingIntent pendingIntent = PendingIntent.getActivity(context, requestID, intent, 0);
    
     AlarmManager am = (AlarmManager)context.getSystemService(Activity.ALARM_SERVICE);
     am.set(AlarmManager.RTC_WAKEUP, timeInMillis, pendingIntent);
    

    To Cancel alarm use below line

     AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
     Intent intent = new Intent(context, AlarmReceiverActivity.class);
     PendingIntent pendingIntent = PendingIntent.getActivity(context,requestID, intent, 0);
     am.cancel(pendingIntent);
    

    Above both code for set and cancel alram is working for me. You have to just pass same request id to set and cancel particular alarm