2011-08-01 31 views
2

这里得到所有多余的值是我的代码如何从意图

 Log.i("sdfgsdf", time.toGMTString()); 
     String SENT = "SMS_SENT"; 
     Intent y= new Intent(SENT); 
     y.putExtra("number", phoneNumber); 
     y.putExtra("time", time.toString()); 

     String DELIVERED = "SMS_DELIVERED"; 
     int FLAG_UPDATE_CURRENT =(0x08000000) ; 
     PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, 
     y, FLAG_UPDATE_CURRENT); 

     PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, 
     new Intent(DELIVERED), FLAG_UPDATE_CURRENT); 

     //---when the SMS has been sent--- 
     r= new BroadcastReceiver(){ 
      @Override 
      public void onReceive(Context arg0, Intent arg1) { 

       switch (getResultCode()) 
       { 

        case Activity.RESULT_OK: 
         Toast.makeText(getBaseContext(), "SMS sent"+arg1.getStringExtra("number"), 
           Toast.LENGTH_SHORT).show(); 
         Constant.DB = Compose.this.openOrCreateDatabase("Indigo",MODE_PRIVATE, null); 
         Constant.DB.execSQL("UPDATE Message SET IsMsgSent='true' where DateAndTime='" + arg1.getStringExtra("time") + "' and ContactNumber='"+arg1.getStringExtra("number")+"'"); 
         Constant.DB.execSQL("UPDATE Message SET FolderId='5' where DateAndTime='" + arg1.getStringExtra("time") + "' and ContactNumber='"+arg1.getStringExtra("number")+"'"); 
         Constant.DB.close(); 
         // unregisterReceiver(r); 
         break; 
        case SmsManager.RESULT_ERROR_GENERIC_FAILURE: 
         Toast.makeText(getBaseContext(), "Generic failure"+arg1.getStringExtra("number"), 
           Toast.LENGTH_SHORT).show(); 
         Constant.DB = Compose.this.openOrCreateDatabase("Indigo",MODE_PRIVATE, null); 
         Constant.DB.execSQL("UPDATE Message SET IsMsgSent='false' where DateAndTime='" + arg1.getStringExtra("time") + "' and ContactNumber='"+arg1.getStringExtra("number")+"'"); 
         Constant.DB.close(); 
         // unregisterReceiver(r); 
         break; 
        case SmsManager.RESULT_ERROR_NO_SERVICE: 
         Toast.makeText(getBaseContext(), "No service"+arg1.getStringExtra("number"), 
           Toast.LENGTH_SHORT).show(); 
         Constant.DB = Compose.this.openOrCreateDatabase("Indigo",MODE_PRIVATE, null); 
         Constant.DB.execSQL("UPDATE Message SET IsMsgSent='false' where DateAndTime='" + arg1.getStringExtra("time") + "' and ContactNumber='"+arg1.getStringExtra("number")+"'"); 
         Constant.DB.close(); 
         // unregisterReceiver(r); 
         break; 
        case SmsManager.RESULT_ERROR_NULL_PDU: 
         Toast.makeText(getBaseContext(), "Null PDU"+arg1.getStringExtra("number"), 
           Toast.LENGTH_SHORT).show(); 
         Constant.DB = Compose.this.openOrCreateDatabase("Indigo",MODE_PRIVATE, null); 
         Constant.DB.execSQL("UPDATE Message SET IsMsgSent='false' where DateAndTime='" + arg1.getStringExtra("time") + "' and ContactNumber='"+arg1.getStringExtra("number")+"'"); 
         Constant.DB.close(); 
         // unregisterReceiver(r); 
         break; 
        case SmsManager.RESULT_ERROR_RADIO_OFF: 
         Toast.makeText(getBaseContext(), "Radio off"+arg1.getStringExtra("number"), 
         Toast.LENGTH_SHORT).show(); 
         Constant.DB = Compose.this.openOrCreateDatabase("Indigo",MODE_PRIVATE, null); 
         Constant.DB.execSQL("UPDATE Message SET IsMsgSent='false' where DateAndTime='" + arg1.getStringExtra("time") + "' and ContactNumber='"+arg1.getStringExtra("number")+"'"); 
         Constant.DB.close(); 
         // unregisterReceiver(r); 
         break; 
       } 

      } 

     }; 
     registerReceiver(r, new IntentFilter(SENT)); 

     //---when the SMS has been delivered--- 
     registerReceiver(new BroadcastReceiver(){ 
      @Override 
      public void onReceive(Context arg0, Intent arg1) { 
       switch (getResultCode()) 
       { 
        case Activity.RESULT_OK: 
         Toast.makeText(getBaseContext(), "SMS delivered", 
           Toast.LENGTH_SHORT).show(); 
         break; 
        case Activity.RESULT_CANCELED: 
         Toast.makeText(getBaseContext(), "SMS not delivered", 
           Toast.LENGTH_SHORT).show(); 
         break;       
       } 
      } 
     }, new IntentFilter(DELIVERED));   

     SmsManager sms = SmsManager.getDefault(); 
     sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);   

当我发送邮件使用for循环IAM得到的只是最后的额外发送sms.how让所有演员多个短信..?

+0

显示如何使用循环发送消息以及如何获取额外消息 – Rasel

+0

在上面的开关情况下获取额外消息(getresultcode)以及在某些情况下循环通用循环。 – Sando

+0

要标识您拥有的每个意向的附加信息发送不同的请求代码,同时创建不同的intent.And在onActivityResult取决于请求代码,你可以识别额外的 – Rasel

回答

9

调用意图的地方做这样的

Bundle bundle = new Bundle(); 
bundle.putString("RetailerName", keyword); 
bundle.putString("positon", aString); 
intent.putExtras(bundle); 

接收意向的地方得到这样

Bundle bundle = this.getIntent().getExtras(); 
    String RetailerName = bundle.getString("retailerName"); 
+0

它工作正常我..谢谢.. – Sando

1

在接收机

Bundle bundle=intent.getExtras(); 
5

数据这应该让所有的值

Bundle bundle = intent.getExtras(); 

for (String key : bundle.keySet()) { 
    Object value = bundle.get(key); 
    Log.d(TAG, String.format("%s %s (%s)", key, 
    value.toString(), value.getClass().getName())); 
}