如何在android中接收sms传送报告时将代码传递给Broadcast接收器

时间:2012-10-10 14:33:44

标签: android sms

我想开发一个短信应用,一次发送多条短信。我想为短信设置一个id。在SMS SENT报告中,我想获得此ID。所以,我会知道已经发送了一条特定的消息。

我已经添加了广播接收器。我也收到了SMS SENT报告。

Ex:我发了10条短信,我收到了8条SMS SENT报告。如何判断哪两条消息没有发送,以便重新发送?

1 个答案:

答案 0 :(得分:0)

对于您发送的每条SMS(或部分短信),您都会提供PendingIntent。在该PendingIntent中,您已经放置了一个Intent,您将在SMS(或部分)成功发送时收到该Intent。在此Intent中,您可以使用额外信息添加额外信息。因此,例如,在发送消息时,代码可能看起来像这样......

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));