android中可以通過兩種方式發(fā)送短信
第一:調(diào)用系統(tǒng)短信接口直接發(fā)送短信聊替;主要代碼如下:
/**
*?直接調(diào)用短信接口發(fā)短信
*?@param?phoneNumber
*?@param?message
*/
publicvoidsendSMS(String?phoneNumber,String?message){
//獲取短信管理器
android.telephony.SmsManager?smsManager?=?android.telephony.SmsManager.getDefault();
//拆分短信內(nèi)容(手機(jī)短信長(zhǎng)度限制)
List?divideContents?=?smsManager.divideMessage(message);
for(String?text?:?divideContents)?{
smsManager.sendTextMessage(phoneNumber,null,?text,?sentPI,?deliverPI);
}
}
第二:調(diào)起系統(tǒng)發(fā)短信功能蚕礼;主要代碼如下:
/**
*?調(diào)起系統(tǒng)發(fā)短信功能
*?@param?phoneNumber
*?@param?message
*/
publicvoiddoSendSMSTo(String?phoneNumber,String?message){
if(PhoneNumberUtils.isGlobalPhoneNumber(phoneNumber)){
Intent?intent?=newIntent(Intent.ACTION_SENDTO,?Uri.parse("smsto:"+phoneNumber));
intent.putExtra("sms_body",?message);
startActivity(intent);
}
}
別忘了權(quán)限:
這里主要講解第一種方法楣黍,第一種方法可以監(jiān)控發(fā)送狀態(tài)和對(duì)方接收狀態(tài)胖秒。
處理返回的發(fā)送狀態(tài):
//處理返回的發(fā)送狀態(tài)
String?SENT_SMS_ACTION?="SENT_SMS_ACTION";
Intent?sentIntent?=newIntent(SENT_SMS_ACTION);
PendingIntent?sentPI?=?PendingIntent.getBroadcast(context,0,?sentIntent,
0);
//?register?the?Broadcast?Receivers
context.registerReceiver(newBroadcastReceiver()?{
@Override
publicvoidonReceive(Context?_context,?Intent?_intent)?{
switch(getResultCode())?{
caseActivity.RESULT_OK:
Toast.makeText(context,
"短信發(fā)送成功",?Toast.LENGTH_SHORT)
.show();
break;
caseSmsManager.RESULT_ERROR_GENERIC_FAILURE:
break;
caseSmsManager.RESULT_ERROR_RADIO_OFF:
break;
caseSmsManager.RESULT_ERROR_NULL_PDU:
break;
}
}
},newIntentFilter(SENT_SMS_ACTION));
處理返回的接收狀態(tài) :
//處理返回的接收狀態(tài)
String?DELIVERED_SMS_ACTION?="DELIVERED_SMS_ACTION";
//?create?the?deilverIntent?parameter
Intent?deliverIntent?=newIntent(DELIVERED_SMS_ACTION);
PendingIntent?deliverPI?=?PendingIntent.getBroadcast(context,0,
deliverIntent,0);
context.registerReceiver(newBroadcastReceiver()?{
@Override
publicvoidonReceive(Context?_context,?Intent?_intent)?{
Toast.makeText(context,
"收信人已經(jīng)成功接收",?Toast.LENGTH_SHORT)
.show();
}
},newIntentFilter(DELIVERED_SMS_ACTION));
發(fā)送短信的參數(shù)說明:
smsManager.sendTextMessage(destinationAddress,?scAddress,?text,?sentIntent,?deliveryIntent)
-- destinationAddress:目標(biāo)電話號(hào)碼
-- scAddress:短信中心號(hào)碼馆匿,測(cè)試可以不填
-- text: 短信內(nèi)容
-- sentIntent:發(fā)送 -->中國(guó)移動(dòng) --> 中國(guó)移動(dòng)發(fā)送失敗 --> 返回發(fā)送成功或失敗信號(hào) --> 后續(xù)處理?? 即滞欠,這個(gè)意圖包裝了短信發(fā)送狀態(tài)的信息
-- deliveryIntent: 發(fā)送 -->中國(guó)移動(dòng) --> 中國(guó)移動(dòng)發(fā)送成功 --> 返回對(duì)方是否收到這個(gè)信息 --> 后續(xù)處理? 即:這個(gè)意圖包裝了短信是否被對(duì)方收到的狀態(tài)信息(供應(yīng)商已經(jīng)發(fā)送成功,但是對(duì)方?jīng)]有收到)何鸡。