Informe de entrega de SMS en Android

Deseo obtener un informe de entrega de SMS. Estoy probando 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 fallido; de lo contrario, muestra el informe como sin servicio, etc. para encontrar un informe de entrega fallido de envío de SMS cuando mi saldo es 0.

¡Ayúdame con cualquier código!

¡Gracias por adelantado!

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; } } }