2013-12-09 3 views
0

내가, 내 소스 코드에 문제가 내가 다 numbber를 SMS 때 난 그냥 ID 같은, 그것은 보내는 마지막 번호입니다 보고서를 제공해야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은 모두 고유해야합니다. Intent에 항상 동일한 액션을 제공하고 있으므로 createBroadcast()으로 전달하면 항상 동일한 PendingIntent이됩니다. 고유 한 값으로는 createBroadcast()를 호출 할 때마다 requestCode 매개 변수를 설정하십시오

,이 같은 (당신의 id 매개 변수가 고유한지 가정) :

여기 deliveryPI 및 sentPi 모두
deliverPI = PendingIntent.getBroadcast(getBaseContext(), id, deliverIntent, 0); 
sentPI = PendingIntent.getBroadcast(getBaseContext(), id, sendinten, 0); 
+0

마지막 매개 변수 0이 표시되는 FLAG 가치? –

+0

@yousuf 마지막 매개 변수 0은 플래그가 설정되지 않음을 나타냅니다. –

관련 문제