I'm trying to make a simple widget with a button that start a Service
with the OnClickPendingIntent()
. I can start it fine but I can't figure out a way to stop it (I know I can do it with a BroadcastReceiver
or something similar but I would like to avoid hardcode).
This is my code:
Intent intent = new Intent(context, myService.class);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_widget);
if (!ismyserviceup(context)) {
views.setOnClickPendingIntent(R.id.my_button, pendingIntent);
} else {
// i need to stop it!!!!
}
There are multiple ways to do this, here's one:
Intent intent = new Intent(context, myService.class);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_widget);
if (ismyserviceup(context)) {
intent.setAction("STOP");
}
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0);
views.setOnClickPendingIntent(R.id.my_button, pendingIntent);
Then on the service's onStartCommand()
, you can check the intent action for "STOP" (you should probably use a better string) and call stopSelf()
.