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