【问题标题】:Passing data to Broadcast Receiver for SMS delivery report将数据传递给广播接收器以获取 SMS 发送报告
【发布时间】:2014-02-14 13:26:39
【问题描述】:

从活动中我使用putExtra(String,String) 将数据传递给广播接收器,但问题是在从第一条短信几秒钟后将第二条短信发送到不同的姓名和号码时,姓名和电话号码没有改变。

当我等待很长时间并发送短信时,姓名和号码已更改为正确的姓名和号码。为什么?

如何解决这个问题?

                 SmsManager SM1=SmsManager.getDefault();
                 ArrayList<String> parts = SM1.divideMessage("Hello");
                 ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();
                 ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>();

                 size=parts.size();
                 for (int i=1;i<=size;i++) {

                  Intent in=new Intent("package.DeliveryReport.SMS_DELIVERED");
                 in.putExtra("package.DeliveryReport.name", name);
                 in.putExtra("package.DeliveryReport.phoneNumber", phoneNumber);
                 deliveryIntents.add(PendingIntent.getBroadcast(this, 0,
                         in, 0));

                 }

                SM1.sendMultipartTextMessage(phoneNumber,null,parts,sentIntents,deliveryIntents);

广播接收器

public class DeliveryReport extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {


    if(intent.getAction().equals("package.DeliveryReport.SMS_DELIVERED"))
    {
        Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
          switch (getResultCode())
          {
            case Activity.RESULT_OK:
                vibrator.vibrate(500);
                Toast.makeText(context, "SMS DELIVERED to "+intent.getStringExtra("package.DeliveryReport.name")+
                        " phone "+intent.getStringExtra("package.DeliveryReport.phoneNumber"),Toast.LENGTH_SHORT).show();

              break;
            case Activity.RESULT_CANCELED:
                vibrator.vibrate(500);
                Toast.makeText(context, "SMS did not DELIVERED to "+intent.getStringExtra("package.DeliveryReport.name")+
                        " phone "+intent.getStringExtra("package.DeliveryReport.phoneNumber"),Toast.LENGTH_SHORT).show();
              break;
            }
          }


}

【问题讨论】:

    标签: android android-intent sms broadcastreceiver


    【解决方案1】:

    我只需要添加 PendingIntent.FLAG_ONE_SHOT

    Intent in=new Intent("package.DeliveryReport.SMS_DELIVERED");
                 in.putExtra("package.DeliveryReport.name", name);
                 in.putExtra("package.DeliveryReport.phoneNumber", phoneNumber);
                 deliveryIntents.add(PendingIntent.getBroadcast(this, 0,
                         in, PendingIntent.FLAG_ONE_SHOT));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      相关资源
      最近更新 更多