1、获取短信管理器
SmsManager sm = SmsManager.getDefault();
2、切割短信,把长短信分成若干个小短信
ArrayList smss = sm.divideMessage(content);
3、for循环把集合中所有的短信全部发出去
for(String string : smss){
sm.sendTextMessage(phone,null,string,null,null);
}
4、sendTextMessage参数含义
Parameters
destinationAddress 短信接收人的电话号码
scAddress 短信服务中心,如果为null,就是用当前默认的短信服务中心
text 短信内容
sentIntent 如果不为null,当短信发送成功或者失败时,这个PendingIntent会被广播出去。(我们可以建立一个recevier来通知用户短信发送成功或者失败)
成功的结果代码是Activity.RESULT_OK,
或者下面这些错误之一 :
RESULT_ERROR_GENERIC_FAILURE
RESULT_ERROR_RADIO_OFF
RESULT_ERROR_NULL_PDU
示例代码:
//发送短信函数
private void sendMsgToPerson(Context context, Person p) {
SmsManager smsManager = SmsManager.getDefault();
Intent sendIntent = new Intent("SENT_SMS_ACTION");
PendingIntent pi = PendingIntent.getBroadcast(context, , sendIntent, );
//person是我自定义的一个类,可以通过getPhnum()来获得手机号码
//短信发送后将会触发一个广播,在广播接收器里可以判断发送成功或者失败
smsManager.sendTextMessage(p.getPhnum(), null, p.getContent(), pi, null);
}
//短信发送的广播接收器
public class sendMsgReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent arg1) {
if (getResultCode() == Activity.RESULT_OK) {
Toast.makeText(context, "发送成功", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(context, "发送失败", Toast.LENGTH_LONG).show();
}
}