配置权限:
<!-- 发送短信的权限 -->
<uses-permission android:name="android.permission.SEND_SMS" />
功能代码:
如果需要监听回执的的话就需要广播
/**
* 短信是否发送成功
* @author hsh
*
*/
public class SendBroadcast extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
//判断短信是否发送成功
switch (getResultCode())
{
case Activity.RESULT_OK:
Toast.makeText(context, "短信发送成功", Toast.LENGTH_LONG).show() ;
break ;
default:
Toast.makeText(context, "短信发送失败", Toast.LENGTH_LONG).show() ;
break ;
}
}
}
/**
短信是否被接收
* @author hsh
*
*/
public class ReceivedBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
//对方是否成功接收到短信
Toast.makeText(context, "对方接收成功", Toast.LENGTH_LONG).show() ;
}
}
//AndroidManifest.xml
<!-- 监听短信是否发送成功 -->
<receiver android:name="com.prs.application.o2o.dw.app.android.order.broadcast.SendBroadcast" >
<intent-filter>
<action android:name="sendmessage" />
</intent-filter>
</receiver>
<receiver android:name="com.prs.application.o2o.dw.app.android.order.broadcast.ReceivedBroadcast" >
<intent-filter>
<action android:name="receivemessage" />
</intent-filter>
</receiver>
//发送短信代码
String sentStr = "sendmessage" ;
String receiveStr = "receivemessage" ;
String str = "这是后台发送的短信";
SmsManager sms = SmsManager.getDefault();
Intent sent_intent = new Intent(sentStr) ;
PendingIntent sentIntent = PendingIntent.getBroadcast(context, 0, sent_intent, 0) ;
Intent delivery_intent = new Intent(receiveStr) ;
PendingIntent deliveryIntent = PendingIntent.getBroadcast(context, 0, delivery_intent, 0) ;
//发送短文本
//sms.sendTextMessage( “接受者电话 ”," 发送者电话","发送的内容",发送是否成功的回执,接收是否成功的回执);
//这是不需要回执就填为null
//sms.sendTextMessage("10086", null, "发送的内容", null,null);
//需要回执
sms.sendTextMessage("10086", null, "发送的内容", sentIntent ,deliveryIntent);
//发送长文本(需要回执)
//因为sendMultipartTextMessage的回执需要的是arrayList集合,所以就转换成list
ArrayList<PendingIntent> sents = new ArrayList<PendingIntent>();
sents.add(sentIntent);
ArrayList<PendingIntent> deliverys = new ArrayList<PendingIntent>();
deliverys.add(deliveryIntent);
ArrayList<String> list = sms.divideMessage(str) ;
sms.sendMultipartTextMessage("10086", null, list, sents , deliverys ) ;