私のXamarin.Android
では、SmsManager
クラスを使用してSMSを送信します。 PendingIntent
とBroadcastReceiver
を使用して配送ステータスを取得します。
SMSDeliveredReceiver.OnReceiveが呼び出されたときに、どのSMSが配信されているかわからないことを除いて、すべて正常に動作します。送信されたメッセージの1つが配信されたことを知っている2つのメッセージを送信するとします。さらなる処理を行うためにどのSMSが配信されているかを知る必要があります。 SMSと配信の間にブリッジを作成する方法を教えてください。ここでXamarin.Android:SMSで配信されたブロードキャスト受信者のSMSを検出
は、これまでの私のコードです:
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;
}
}
}
あなたが/マニフェストファイルに –
はい@JaydeepPatelを許可し、放送受信機を追加しました私は権限を追加しましたし、私が述べたように私は、放送受信機が呼び出されます上記の質問は、相対SMSを検出する方法ですか?私は配達を得るが、送られたSMSのどれがこの配達であるか? –
@JaydeepPatel私はJavaを知っていますが、そのリンクは実際に私を助けません。それはIncoming Messagesについてですが、私の質問はSent Messagesに関するものです。私はたくさんのメッセージを送信し、各メッセージの納品状況を確認したい。あなたが提供したリンクはメッセージを受信することです。 –