8
votes

Comment abandonner BroadCastraCeiver dans Android

Je fais une application de planification SMS qui prendra simplement du temps, des SMS et du numéro de l'utilisateur et d'envoyer ce SMS à un moment donné. J'utilise en PLANDINTENT . Voici mon code d'exemple.

Lorsque l'utilisateur crée un calendrier, il appelle simplement cette méthode. xxx

et voici le fichier "SMSBroadCastreceiver.java" xxx

Ma question est la suivante: lorsque l'utilisateur édite l'horaire, comment puis-je annuler cette diffusion et en envoyer un nouveau ??? Comme il peut y avoir plus d'un calendrier, comment trouver la spécificité de changement / abandon ??


0 commentaires

4 Réponses :


6
votes

Si vous avez une référence à l'intention en attente, vous pouvez Annuler l'intention. Si vous souhaitez abandonner une émission actuelle, vous pouvez utiliser AbortBroadcast .

Voir aussi:

1) Comment obtenir et annuler un pillage? < / p>

2) Arrêtez l'intention en attente

3) Abandonner / annuler des émissions


2 commentaires

Je dois abandonner toute intention en attente non seulement à jour comme je l'ai mentionnée en question


Peut-être devriez-vous conserver une référence à chaque nouvelle intention en attente que vous apportez, alors si vous trouvez que vous devez l'annuler plus tard, vous pouvez itérer sur vos intentions en attente et utiliser la méthode d'annulation mentionnée ci-dessus.



10
votes

Lorsque l'utilisateur édite l'horaire, comment puis-je annuler cette diffusion et en envoyer un nouveau?

appel annuler () sur alarmManager avec un équivalent en pinkinent sur celui que vous avez utilisé pour configurer la planification: < Pré> xxx

Comme il peut y avoir plus d'un calendrier, comment trouver la spécificité spécifique à changer / avorter?

Il n'y a qu'une seule alarme dans votre implémentation.


3 commentaires

Mais que si je veux ajouter plusieurs alarmes ??


@Dawoodabbasi: Utilisez des identifiants distincts pour chaque (votre 234324243 ).


Il est facile de le structurer de manière à ce qu'une seule alarme soit active à tout moment. Trier toutes vos alarmes en attente basées sur le délai de livraison souhaité, puis planifiez simplement le plus proche. Lorsque cette alarme déclenche, regardez votre liste (conserver dans la base de données?) Et choisissez à nouveau le plus proche.



0
votes
  • Vide final public AbortBroadcast ()

    ajouté au niveau API 1 Définit l'indicateur indiquant que ce récepteur doit abandonner la diffusion actuelle; ne fonctionne que avec des émissions envoyées via le contexte.SendOrderedBroadcast. Cela empêchera tout autre récepteur de diffusion de recevoir la diffusion. Il appellera toujours Onreceive (contexte, intention) du radiodifférieur que l'appelant du contexte.SendOrderedBroadcast est passé.

    Cette méthode ne fonctionne pas avec des émissions non ordonnées telles que celles envoyées avec contexte.SendBroadcast


0 commentaires

0
votes

Si vous changez simplement timemilli code>, vous pouvez appeler votre sendmessage () code> à nouveau.

alarmManager.set(AlarmManager.RTC_WAKEUP, Timemilli, pendingIntent);


0 commentaires