2013-12-09 36 views
0

我有问题,我的源代码,当我短信群发numbber我只是提供报告,其中ID相同,它是被发送的最后一个号码如何在Android中使用pendingIntent短信多个号码?

String SENT = "SMS_SENT"; 
    String DELIVERED = "SMS_DELIVERED"; 
    PendingIntent sentPI; 
    PendingIntent deliverPI; 

    try { 
     JSONObject json = new JSONObject(content); 
     status = json.getString("status"); 
     message = json.getString("message"); 
     pesan = json.getString("pesan"); 
     contacts = json.getJSONArray("contacts"); 
     Log.i("INFO","status " + status + ", message " + message + ", pesan "+ pesan + " , jml contacts " + contacts.length()); 

     for (int i = 0; i < contacts.length(); i++) { 
      JSONObject datauser = contacts.getJSONObject(i); 
      Log.i("INFO", "no :" + (i + 1) + " " + datauser.getString(NO)); 

     } 

     Intent sendinten = new Intent(SENT); 
     Intent deliverIntent = new Intent(DELIVERED); 

     SmsManager sms = SmsManager.getDefault(); 
     int[] id_recever = new Gson().fromJson(id_message, int[].class); 

     for (int i = 0; i < id_recever.length; i++) { 
      JSONObject datauser = contacts.getJSONObject(i); 
      String id = String.valueOf(id_recever[i]); 

      Log.i("INFO", "ID message " + id); 
      deliverIntent.putExtra("id_send", id); 

      deliverPI = PendingIntent.getBroadcast(getBaseContext(), 0,deliverIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
      sentPI = PendingIntent.getBroadcast(getBaseContext(), 0,sendinten, PendingIntent.FLAG_UPDATE_CURRENT); 
      sms.sendTextMessage(datauser.getString(NO), null, pesan,sentPI, deliverPI); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
     Log.d("DATA", "GAGAL"); 
    } 

// --------- - SMS Delivert ----------- //

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

      switch (getResultCode()) { 
      case Activity.RESULT_OK: 
       Toast.makeText(getBaseContext(), "SMS send",Toast.LENGTH_SHORT).show(); 
       Log.i("INFO", "SMS SEND"); 
       break; 
      case SmsManager.RESULT_ERROR_GENERIC_FAILURE:// no salah 
       Toast.makeText(getBaseContext(), "Generic failure",Toast.LENGTH_SHORT).show(); 
       break; 
      case SmsManager.RESULT_ERROR_NO_SERVICE: // didn't get service 
                 // provider 
       Toast.makeText(getBaseContext(), "No service", 
         Toast.LENGTH_SHORT).show(); 
       break; 
      case SmsManager.RESULT_ERROR_NULL_PDU: // 
       Toast.makeText(getBaseContext(), "Null PDU", 
         Toast.LENGTH_SHORT).show(); 
       break; 
      case SmsManager.RESULT_ERROR_RADIO_OFF: // mode airplane 
       Toast.makeText(getBaseContext(), "Radio off", 
         Toast.LENGTH_SHORT).show(); 
       break; 
      } 

     } 
    }, new IntentFilter(SENT)); 

// ----------- SMS Delivert ----------- //

registerReceiver(new BroadcastReceiver() { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      String id_message_send = intent.getStringExtra("id_send"); 
      switch (getResultCode()) { 
      case Activity.RESULT_OK: 
       Log.i("INFO", "SMS Delivered " + id_message_send); 
       AsyncHttpClient postId = new AsyncHttpClient(); 
       RequestParams id = new RequestParams(); 
       id.put("id_message_send", id_message_send); 

       postId.post(URL_UPDATE, id, new AsyncHttpResponseHandler() { 
        @Override 
        public void onStart() { 
         // TODO Auto-generated method stub 
         super.onStart(); 
        } 

        @Override 
        public void onSuccess(int arg0, String response) { 
         Log.i("INFO", "Response Server " + response); 
         super.onSuccess(arg0, response); 
        } 

       }); 
       break; 
      case Activity.RESULT_CANCELED: 
       Log.i("INFO", "SMS NOT Deliver"); 
       break; 
      } 

     } 
    }, new IntentFilter(DELIVERED)); 

} 

回答

0

您需要确保您的PendingIntent s都是唯一的。由于您总是在Intent中提供相同的操作,您将传递给createBroadcast(),您总是会收到相同的PendingIntent

尝试requestCode参数每次调用createBroadcast()时间设置为唯一值,就像这样(假设你的id参数是唯一的):

deliverPI = PendingIntent.getBroadcast(getBaseContext(), id, deliverIntent, 0); 
sentPI = PendingIntent.getBroadcast(getBaseContext(), id, sendinten, 0); 
+0

这里既deliveryPI和sentPi最后一个参数0指出哪些FLAG价值? –

+0

@yousuf最后一个参数0表示没有设置标志。 –

相关问题