Dans mon application Xamarin.Android
j'envoie des SMS en utilisant la classe SmsManager
. Je reçois également l'état de livraison en utilisant PendingIntent
et BroadcastReceiver
.
Tout fonctionne bien, sauf que je ne peux pas dire quel SMS est livré lorsque SMSDeliveredReceiver.OnReceive est appelé. Disons que j'envoie deux messages, je sais juste que l'un des messages envoyés est livré. J'ai besoin de savoir quel SMS est livré pour faire d'autres processus. S'il vous plaît dites-moi comment créer un pont entre SMS et la livraison.Xamarin.Android: Détecter les SMS dans le récepteur de diffusion de SMS livré
Voici mon code à ce jour:
private PendingIntent piSent, piDelivered;
private BroadcastReceiver _smsSentBroadcastReceiver, _smsDeliveredBroadcastReceiver;
void SetUp()
{
piSent = PendingIntent.GetBroadcast(this, 0, new Intent("SMS_SENT"), 0);
piDelivered = PendingIntent.GetBroadcast(this, 0, new Intent("SMS_DELIVERED"), 0);
_smsSentBroadcastReceiver = new SMSSentReceiver();
_smsDeliveredBroadcastReceiver = new SMSDeliveredReceiver();
RegisterReceiver(_smsSentBroadcastReceiver, new IntentFilter("SMS_SENT"));
RegisterReceiver(_smsDeliveredBroadcastReceiver, new IntentFilter("SMS_DELIVERED"));
}
void Send(string number, string message)
{
SmsManager.Default.SendTextMessage(q.Number, null, q.Message, piSent, piDelivered);
}
[BroadcastReceiver(Exported = true)]
public class SMSDeliveredReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
Toast.MakeText(Application.Context, "SMSDeliveredReceiver.OnReceive", ToastLength.Short).Show();
switch ((int)ResultCode)
{
case (int)Result.Ok:
Toast.MakeText(Application.Context, "SMS Delivered", ToastLength.Short).Show();
break;
case (int)Result.Canceled:
Toast.MakeText(Application.Context, "SMS not delivered", ToastLength.Short).Show();
break;
default:
Toast.MakeText(Application.Context, ResultCode.ToString(), ToastLength.Short).Show();
break;
}
}
}
Avez-vous ajouté la permission et le récepteur de diffusion dans le fichier manifeste/ –
Oui @JaydeepPatel J'ai ajouté des autorisations et je le récepteur de radiodiffusion est appelé comme je l'ai mentionné ci-dessus, la question est de savoir comment détecter le SMS relatif? Je reçois la livraison mais lequel des SMS envoyés est cette livraison environ? –
@JaydeepPatel Je connais Java mais ce lien ne m'aidera pas vraiment. Il s'agit de messages entrants, ma question concerne les messages envoyés. I Envoyer un tas de messages et que vous voulez vérifier l'état de livraison de chaque message. Le lien que vous avez fourni concerne les MESSAGES DE RÉCEPTION. –