[Solved] Android – Notification pendingIntent to Stop Service

I have two notification actions, one to stop the service and one to restart it.
I am successfully starting the service but I can’t stop it with this code:

PendingIntent show = PendingIntent.getService(this, 1, svc, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent hide = PendingIntent.getService(this, 1, svc, PendingIntent.FLAG_CANCEL_CURRENT);

Any ideas?

Not a duplicate as my question is specifically about notification actions, not buttons (I have no problems getting my buttons to stop and start the service).

Solution #1:

That flag alone will not stop the service. I would recommend that you make the stop action instead fire a custom BroadcastReceiver class which runs the stopService() method inside of its onReceive(). Let me know if you need help setting something like that up in more detail.

Edited answer:

Change your Intent and PendingIntent for the hide action to this:

Intent intentHide = new Intent(this, StopServiceReceiver.class);

PendingIntent hide = PendingIntent.getBroadcast(this, (int) System.currentTimeMillis(), intentHide, PendingIntent.FLAG_CANCEL_CURRENT);

Then make the StopServiceReceiver like this, where ServiceYouWantStopped.class is the service to be stopped:

public class StopServiceReceiver extends BroadcastReceiver {
    public static final int REQUEST_CODE = 333;

    @Override
    public void onReceive(Context context, Intent intent) {
        Intent service = new Intent(context, ServiceYouWantStopped.class);
        context.stopService(service);
    }
}

Make sure the BroadcastReceiver you just made is declared in your manifest file:

<receiver
    android:name=".StopServiceReceiver"
    android:enabled="true"
    android:process=":remote" />

Hope this helps!

Respondent: Code Poet

The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .

Leave a Reply

Your email address will not be published.