2014-03-03 128 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