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 Lorsque l'utilisateur crée un calendrier, il appelle simplement cette méthode. P> et voici le fichier "SMSBroadCastreceiver.java" P> 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 ?? p> p> en PLANDINTENT code>. Voici mon code d'exemple.
4 Réponses :
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 . P>
Voir aussi: P>
1) Comment obtenir et annuler un pillage? < / p>
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.
Lorsque l'utilisateur édite l'horaire, comment puis-je annuler cette diffusion et en envoyer un nouveau? p>
appel
annuler () code> sur
alarmManager code> avec un équivalent
en pinkinent code> sur celui que vous avez utilisé pour configurer la planification: p> < Pré> xxx pré>
Comme il peut y avoir plus d'un calendrier, comment trouver la spécificité spécifique à changer / avorter? p> blockQuote>
Il n'y a qu'une seule alarme dans votre implémentation. P> blockquote>
Mais que si je veux ajouter plusieurs alarmes ??
@Dawoodabbasi: Utilisez des identifiants distincts pour chaque (votre 234324243 code>).
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.
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é. P>
Cette méthode ne fonctionne pas avec des émissions non ordonnées telles que celles envoyées avec contexte.SendBroadcast P>
Si vous changez simplement timemilli code>, vous pouvez appeler votre
sendmessage () code> à nouveau.
alarmManager.set(AlarmManager.RTC_WAKEUP, Timemilli, pendingIntent);