1
In my application I have a Service running in the background, which puts a notification in the user’s Status Bar, I would like to add a button to turn off the service, as the Waze map app does.
1
In my application I have a Service running in the background, which puts a notification in the user’s Status Bar, I would like to add a button to turn off the service, as the Waze map app does.
1
Create a Broadcastreceiver with the code needed to stop the service.
When creating the notification use the method addAction() of Notification.Builder passing a Pendigintent what’s up with this one Broadcastreceiver.
Intent intent = new Intent(this, NotificationReceiver.class);
PendingIntent pIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
Notification n = new Notification.Builder(this)
...
...
...
.setAutoCancel(true)
.addAction(R.drawable.icon, "Parar serviço", pIntent).build();
NotificationManager notificationManager =
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(0, n);
Another way would be the Pendigintent be constructed in order to launch the service by passing a 'Extra' indicating that the service must be stopped.
The method onStartCommand() of the service checks that 'Extra' and flame stopSelf().
The Pendigintent to be used in the addAction() would be so:
Intent intent = new Intent(this, oSeuServico.class);
Intent.putExtra("Parar","Sim");
PendingIntent pIntent = PendingIntent.getService(this, 0, intent, 0);
Browser other questions tagged android android-notification
You are not signed in. Login or sign up in order to post.
Right, and the off icon in the notification how can I do?
– Mateus Carvalho
I edited the question with another way of doing. The icon is a drawable. The code I posted is
R.drawable.icon, the first parameter ofaddAction.– ramaral
Got it, thank you very much! I’m already implementing here, I believe it will work :)
– Mateus Carvalho
Something else, there’s a time when the action shows, there’s a time when you don’t, when you have a lot of notifications, there’s a way to always show the action?
– Mateus Carvalho
What doesn’t show? Turn off icon or whole notification?
– ramaral
Exactly, I put the top priority on the notification now appears.
– Mateus Carvalho
I managed to implement until the part of Broadcastreceiver, now I would like to close all application, on broadcast.. Something like Finish(); to close every app.
– Mateus Carvalho
If Broadcastreceiver is a inner class of his Activity you have access to the method
finish(). However it doesn’t make much sense to use Notifications to "stop" the service if its Activity has to be maintained while the service is in operation.– ramaral