android - 如何知道从 Android BroadcastReceiver 发送/传递了哪些 Sms?

标签 android sms broadcastreceiver smsmanager

我制作了一个简单的应用程序来在 android 上发送多条短信。我找不到发送/发送了哪条短信,因为发送通知没有说明发送的是哪条短信。

这是我的代码:

    this.destination = data[0];
    this.body = data[1];

    PendingIntent piSend = PendingIntent.getBroadcast(aCtx, 0, new Intent(Cons.SMS_SENT),0);
    PendingIntent piDelivered = PendingIntent.getBroadcast(aCtx, 0, new Intent(Cons.SMS_DELIVERED), 0);

    SmsManager smsManager = SmsManager.getDefault();
    smsManager.sendTextMessage(destination, null, body, piSend, piDelivered);

然后我使用广播接收器来获取传递状态

public class DeliverSMSBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

    switch (getResultCode())
    {
        case Activity.RESULT_OK:
            Toast.makeText(context, "SMS delivered",
                    Toast.LENGTH_SHORT).show();
            Log.d(Cons.TAGS+" RK","RESULT_OK=> DELIVER");
            break;
        case Activity.RESULT_CANCELED:
            Toast.makeText(context, "SMS not delivered",
                    Toast.LENGTH_SHORT).show();
            Log.d(Cons.TAGS+" RK","RESULT_CANCELED");
            break;
    }}
}

这是我的 Activity :

public class SenderPage extends Activity {
private EditText txtRecepients = null;
private EditText inputSMSText = null;
private Button btnSendSMS = null;

private final BroadcastReceiver outgoingSMSBR = new OutgoingSMSBroadcastReceiver();
private final BroadcastReceiver deliverSMSBR = new DeliverSMSBroadcastReceiver();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.senderpage);
    Log.i(Cons.TAGS, "Sender Page Start");

    this.setTitle("Send Message");

    this.txtRecepients = (EditText) findViewById(R.id.txtRecepients);
    this.inputSMSText = (EditText) findViewById(R.id.inputSMSText);
    this.btnSendSMS = (Button) findViewById(R.id.btnSendSMS);

    txtRecepients.setText("087722079905");      //087722079905 //081214571542

    btnSendSMS.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            //Toast.makeText(SenderPage.this, "Clicked send", Toast.LENGTH_SHORT).show();
            String txtRecepients = SenderPage.this.txtRecepients.getText().toString();
            String inputSMSText = SenderPage.this.inputSMSText.getText().toString();

            new Sender(SenderPage.this,Cons.TAGS).execute(txtRecepients, inputSMSText);
        }
    });

    //txtRecepients.getText().toString();
}

@Override
protected void onResume() {
    registerReceiver(outgoingSMSBR, new IntentFilter(Cons.SMS_SENT));
    registerReceiver(deliverSMSBR, new IntentFilter(Cons.SMS_DELIVERED));
    super.onResume();
}

@Override
protected void onPause() {
    unregisterReceiver(outgoingSMSBR);
    unregisterReceiver(deliverSMSBR);
    super.onPause();
}

当我发送多条短信时,如何获取发送信息以确定发送了哪条短信?

最佳答案

最后,我通过使用 sms 创建日期时间向未决 Intent 添加 Intent 附加项得到了答案,然后根据附加数据发送的日期时间更新短信状态,这里是代码 fragment :

Intent sentIntent = new Intent(Cons.SMS_SENT);
sentIntent.putExtra("createdTime", createdTime);

Intent deliveryIntent = new Intent(Cons.SMS_SENT);
deliveryIntent.putExtra("createdTime", createdTime);

然后我可以根据创建的时间识别发送/传递的短信

 public void onReceive(Context context, Intent intent) {
        String smsDateTimeAsID = intent.getStringExtra("createdTime");
 }

关于android - 如何知道从 Android BroadcastReceiver 发送/传递了哪些 Sms?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15835052/

相关文章:

android - 如何将数据从 BroadcastReceiver 传递到 Activity?

java - Android:如果未在 XML 中定义,则通过 ID 查找 View 对象

java - 从未使用过的变量

Android - Open GL ES ...我可以从哪里开始?

android - 如何使用外部 jar

android - 阅读特定号码的收件箱消息并在 Activity 中显示它们

android - 代号一 : receive sms on Android by native code

android - 附加音频文件作为 android 中的彩信

android - BroadcastReceiver 试图在无序广播期间返回结果 Weird Error

android - IntentService <-> Activity 通信