2014-03-03 77 views
3

在我的Application中,我使用SMS Manager發送短信。要檢查是否發送消息,我正在使用Toast。 而不是Toast我想得到SMS Delivery Report。我想嘗試很多例子,但是,當我的代碼中的SMS發送時,我的餘額爲0時,我的餘額不顯示投遞報告,我想查找短信發送失敗的投遞報告。如何獲取已發送短信的發送報告?

代碼:

String phoneNo = phno.getText().toString(); 
String smsBody = body.getText().toString(); 
//Selected Messages to report to 1909 
{ 
      try 
      { 

       SmsManager smsManager = SmsManager.getDefault(); 
       smsManager.sendTextMessage(phoneNo, null, smsBody, null, null); 
       Toast.makeText(getApplicationContext(), "SMS Sent to: "+phoneNo,Toast.LENGTH_SHORT).show(); 
      }       
      catch (Exception e) 
      { 
       //Error Occurred if No Messages Selected 
       Toast.makeText(getApplicationContext(),"SMS failed, please try again later!",Toast.LENGTH_SHORT).show(); 
       e.printStackTrace(); 
      } 
      } 

    } 

幫助我的任何代碼!

在Adavance Thanx!

回答

6

嘗試此鏈接,

SMS Delivery Report in Android

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

     } 
    } 

不要忘了在清單

<uses-permission android:name="android.permission.RECEIVE_SMS" /> 
<uses-permission android:name="android.permission.SEND_SMS" /> 
<uses-permission android:name="android.permission.READ_SMS" /> 
<uses-permission android:name="android.permission.WRITE_SMS" /> 
+0

我沒有使用'廣播Receiver'送'文本message',而不是其中的我在我的活動 –

+0

我們沒有使用廣播接收器發送短信的交付發送消息'短信Manager' .. –

+0

使用我們的一段代碼仍然沒有收到遞送報告.... –

1

添加這些權限發送短信使用此方法

public void sendTextMessage (String destinationAddress, String scAddress, String text, 
PendingIntent sentIntent, PendingIntent deliveryIntent) 

Ë g

sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); 

其中deliveredPI是PendingIntent。

最後一個參數是deliveryIntent,它是由android向成功發送消息的接收者發起的。

所以現在你需要有一個BroadcastReceiver來獲得這個味精。

BroadcastReceiver deliveryBroadcastReciever = new deliverReceiver(); 

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

    } 
} 
+0

我怎樣才能找到交貨來自什麼號碼?!將更多數據添加到DeliverReceiver的交付中。 - alireza 2分鐘前編輯 – alireza