2014-02-14 76 views
1

我用putExtra(String,String)將數據傳遞給廣播接收器,但問題是,幾秒鐘之後,發送第二短信至不同的名稱和號碼時,姓名和電話號碼沒有改變來自第一條短信。將數據傳遞到廣播接收器用於SMS傳遞報告從活動

當我等待很長一段時間,併發送短信,姓名和號碼已更改爲正確的姓名和號碼。爲什麼?

如何解決這個問題?

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


} 

回答

0

所有我需要的是增加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)); 
相關問題