How to cancel Android notifications?

I am creating an application in which the user can set an alarm based on the GPS location. I want only one alarm to be active at any time. Therefore, when the user sets a second alarm, I want to cancel the notification for the first alarm (then set a new notification for the second alarm).

Currently, my notifications continue to add up (since I cannot delete them, so they are all active). Here is my code where I try to delete the alarm and notifications:

// Stop the location alarm activity
Intent intentAlarmService_delete = new Intent(v.getContext(), AlarmService.class);
stopService(intentAlarmService_delete); // I think this calls onDestroy() in AlarmService class ...

mNtf = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNtf.cancelAll();

Intent alarmIntent2 = new Intent(getApplicationContext(), OneTimeAlarmReceiver.class);
PendingIntent pendingIntentAlarm = PendingIntent.getBroadcast(getApplicationContext(), PENDING_INTENT_REQUEST_CODE1, 
    alarmIntent2, PendingIntent.FLAG_CANCEL_CURRENT);
pendingIntentAlarm.cancel();

This is the onDestroy () function in my AlarmService.class (I'm not sure when this is called ...)

public void onDestroy(){
    super.onDestroy();
    mNtf.cancel(NOTIFICATION_ID1);

    Intent alarmIntent = new Intent(getApplicationContext(), OneTimeAlarmReceiver.class);

    PendingIntent pendingIntentAlarm = PendingIntent.getBroadcast(getApplicationContext(), PENDING_INTENT_REQUEST_CODE1, 
        alarmIntent, PendingIntent.FLAG_CANCEL_CURRENT);
    pendingIntentAlarm.cancel();

    Intent intentAlarmService = new Intent(getApplicationContext(), AlarmService.class); 
    stopService(intentAlarmService); 

    mNtf.cancel(NOTIFICATION_ID1);
    mNtf.cancelAll();
}

Then I set a new alarm and notification:

Intent intentAlarmService2 = new Intent(v.getContext(), AlarmService.class);
startService(intentAlarmService2);

By the way, my AlarmService.class works for sure.

Thanks in advance.

+3
2

getApplicationContext(). , . this, , getApplicationContext() on, Context.

, , Notification. , , . cancelAll() NotificationManager .

, onDestroy() . , - (, bindService()). , , - <service> (, android:process), NotificationManager cancel().

+7

Source: https://habr.com/ru/post/1759201/


All Articles