2012-07-21 31 views
8

Chcę otrzymać raport doręczenia SMS Próbuję wielu przykładów, ale jeden raport nie wyświetla raportu doręczenia, tak jak moje saldo wynosi 0, gdy wiadomość SMS wysłana w moim kodzie nie wyświetla komunikatu o doręczeniu SMS-a, w przeciwnym razie wyświetla raport jak żadna usługa itp. Chcę znaleźć wiadomość SMS o nieudanym doręczeniu, gdy moje saldo wynosi 0.Raport o dostarczeniu wiadomości SMS w Androidzie

Pomóż mi z dowolnym kodem!

Z góry dziękuję!

+0

Musisz zaakceptować odpowiedzi, jeśli chcesz, aby ci ludzie pomogli, FYI –

Odpowiedz

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

Cool !!! Mi to pasuje. Dzięki –

+0

jak wyrejestrowaćReceiver()? Staję się z tego wyjątkiem? Jakieś pomysły? –

+0

Użyj zaktualizowanej odpowiedzi – Manikandan

Powiązane problemy