5 votes

Android - PendingIntent en attente pour arrêter le service

J'ai deux actions de notification, une pour arrêter le service et une pour le redémarrer. Je démarre avec succès le service mais je ne peux pas l'arrêter avec ce code:

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

Des idées?

Pas un doublon car ma question concerne spécifiquement les actions de notification, pas les boutons (je n'ai pas de problèmes pour arrêter et redémarrer le service).

4voto

nick friskel Points 1132

Seule cette balise ne suffira pas à arrêter le service. Je vous recommande de faire en sorte que l'action d'arrêt déclenche plutôt une classe personnalisée BroadcastReceiver qui exécute la méthode stopService() à l'intérieur de sa méthode onReceive(). Faites-moi savoir si vous avez besoin d'aide pour mettre en place quelque chose comme ça de manière plus détaillée.

Réponse modifiée:

Modifiez votre Intent et PendingIntent pour l'action de masquage de cette manière :

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

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

Ensuite, créez le StopServiceReceiver de cette manière, où ServiceYouWantStopped.class est le service à arrêter:

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);
    }
}

Assurez-vous que le BroadcastReceiver que vous venez de créer est déclaré dans votre fichier manifeste :

J'espère que cela vous aidera!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X