2013-08-14 35 views
5

Tôi gửi nhiều thông điệp tới nhiều liên lạc, và cho mỗi lần sử dụng tiếp xúc mã sauAndroid SmsManger Cung cấp báo cáo

private void sendSMS(String first, String last, String id, String phoneNumber) 
{   
    try { 
     String message; 
     message = insertName(first, last); 

     if (message.equals(null) || message.equals("")) message = "\n"; 


     String SENT = "SMS_SENT"; 
     String DELIVERED = "SMS_DELIVERED"; 

     PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, 
      new Intent(SENT), 0); 

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

     //---when the SMS has been sent--- 
     registerReceiver(new BroadcastReceiver() 
     { 
      public void onReceive(Context arg0, Intent arg1) 
      { 
       switch (getResultCode()) 
       { 

        case Activity.RESULT_OK: 
         Toast.makeText(getBaseContext(), "SMS sent", 
           Toast.LENGTH_SHORT).show(); 
         break; 
        case SmsManager.RESULT_ERROR_GENERIC_FAILURE: 
         Toast.makeText(getBaseContext(), "Generic failure", 
           Toast.LENGTH_SHORT).show(); 
         break; 
        case SmsManager.RESULT_ERROR_NO_SERVICE: 
         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: 
         Toast.makeText(getBaseContext(), "Radio off", 
           Toast.LENGTH_SHORT).show(); 
         break; 
       } 
      } 
     }, 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); 

tôi muốn tìm hiểu cung cấp báo cáo cho mỗi tin nhắn, làm thế nào có thể nhận được số hoặc bất cứ điều gì thông điệp phát sóng để hiểu báo cáo phân phối dành cho liên hệ này?

Trả lời

6

Tạo mục đích đang chờ xử lý đã phân phối của bạn với phụ phí mà bạn sẽ sử dụng để xác định thư được gửi.

Intent deliveredIntent = new Intent(DELIVERED + id); 
deliveredIntent.putExtra("id", id); // Add some unique id as an extra 
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, 
     deliveredIntent, 0); 

registerReceiver(new BroadcastReceiver() 
     { 
      @Override 
      public void onReceive(Context arg0, Intent arg1) 
      { 
       lonng messageID = arg1.getLongExtra("id", -1L); 
       if(id!=-1) 
       { 
         // you got your sms delivered with the id 
       } 

      } 
     }, new IntentFilter(DELIVERED+id));  
+0

Có, bạn có thể đặt bất kỳ điều gì miễn là bạn có thể xác định ý định của nhau. – Tarun

+0

'id' đã được định nghĩa là Chuỗi trong các tham số; đó là 'putExtra()' thêm chuỗi vào 'deliverIntent'. Vậy tại sao bạn sử dụng 'getLongExtra()' thay vì 'getStringExtra()' trong 'onReceive'? – 1111161171159459134

+0

@Tarun bất kỳ ý tưởng nào về MMS? – Gattsu

Các vấn đề liên quan