2012-07-21 12 views
8

Deseo obtener un informe de entrega de SMS Estoy intentando muchos ejemplos, pero un flujo no muestra el informe de entrega como si mi saldo es 0 cuando el envío de SMS en mi código no muestra el informe de entrega de SMS. como ningún servicio, etc. Quiero encontrar el envío de SMS informe de entrega fallido cuando mi saldo es 0.Informe de entrega de SMS en Android

Ayuda con cualquier código!

¡Gracias de antemano!

+0

Necesita aceptar respuestas si quiere que la gente lo ayude, FYI –

Respuesta

36
BroadcastReceiver sendBroadcastReceiver = new SentReceiver(); 
    BroadcastReceiver deliveryBroadcastReciever = new DeliverReceiver();; 

    @Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause(); 

     try { 
      unregisterReceiver(sendBroadcastReceiver); 
      unregisterReceiver(deliveryBroadcastReciever); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
@Override 
protected void onDestroy() { 
    // TODO Auto-generated method stub 
    super.onDestroy(); 
    try { 
     unregisterReceiver(sendBroadcastReceiver); 
     unregisterReceiver(deliveryBroadcastReciever); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

    send_sms.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       if (textView.getText().toString().equals("") 
         | textView.getText().toString().equals(null)) { 
        Toast.makeText(SendSMS.this, enter_ph_no, Toast.LENGTH_LONG) 
          .show(); 
       } else { 


         sendSMS(textView.getText().toString(), "sms_content"); 
         finish(); 


       } 

      } 
     }); 
private void sendSMS(String phoneNumber, String message) { 
     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); 

     registerReceiver(sendBroadcastReceiver, new IntentFilter(SENT)); 

     registerReceiver(deliveryBroadcastReciever, new IntentFilter(DELIVERED)); 
     SmsManager sms = SmsManager.getDefault(); 
     sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); 


    } 

    class DeliverReceiver extends BroadcastReceiver { 
     @Override 
     public void onReceive(Context context, 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; 
      } 

     } 
    } 

    class SentReceiver extends BroadcastReceiver { 
     @Override 
     public void onReceive(Context context, Intent arg1) { 
      switch (getResultCode()) { 
      case Activity.RESULT_OK: 
       Toast.makeText(getBaseContext(), sms_sent, Toast.LENGTH_SHORT) 
         .show(); 
       startActivity(new Intent(SendSMS.this, ChooseOption.class)); 
       overridePendingTransition(R.anim.animation, R.anim.animation2); 
       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; 
      } 

     } 
    } 
+0

¡¡¡Genial !!! Esto funciona para mi. Gracias –

+0

cómo cancelar el registro de Receptor()? Me convierto en un exagerado por eso? ¿Algunas ideas? –

+0

Utilice la respuesta actualizada – Manikandan