2

一度に複数の SMS を送信する SMS アプリを開発したいと考えています。SMSにIDを設定したい。SMS SENT レポートで、この ID を取得したいと考えています。それで、特定のメッセージが送信されたことを知るようになります。

すでに放送受信機を追加しています。SMS SENT レポートも受信しています。

例: 10 件の SMS を送信し、8 件の SMS SENT レポートを受け取りました。どの 2 つのメッセージが送信されていないかを確認して、再送信できるようにするにはどうすればよいですか?

4

1 に答える 1

0

送信する SMS (または SMS の一部) ごとに、PendingIntent を提供します。その PendingIntent には、SMS (またはその一部) が正常に送信されたかどうかにかかわらず受信する Intent が含まれています。このインテントでは、extras を使用して追加情報を入れることができます。したがって、たとえば、メッセージを送信する場合、コードは次のようになります...

String receiverCodeForThisMessage = "STRING_CODE_FOR_MY_SMS_OUTCOME_RECEIVER";
int uniqueCodeForThisPartOfThisSMS = 100*numberSMSsentSoFar+PartNumberOfThisSMSpart;

Intent intent = new Intent(receiverCodeForThisMessage);
intent.putExtra("TagIdentifyIngPieceOfInformationOne", piece1);
intent.putExtra("TagIdentifyIngPieceOfInformationTwo", piece2);

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, uniqueCodeForThisPartOfThisSMS, intent, 0);

SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage("phonenumber", "Fred Bloggs", "Hello!", pendingIntent, null);

ただし、その前に、設定した結果とインテントを取得するレシーバーを登録します。そのインテントから、次の情報を抽出します。

registerReceiver(new BroadcastReceiver(){

    @Override
    public void onReceive(Context context, Intent intent) {
        // Get information about this message
        int piece1 = intent.getIntExtra("TagIdentifyIngPieceOfInformationOne", -1);
        int piece2 = intent.getIntExtra("TagIdentifyIngPieceOfInformationTwo", -1);

        if (getResultCode() == Activity.RESULT_OK) {
            // success code
        }
        else {
            // failure code
        }
}, new IntentFilter(receiverCodeForThisMessage));
于 2012-10-10T15:33:12.800 に答える