Android提供的系統(tǒng)服務之--SmsManager(短信管理器)
來源:程序員人生 發(fā)布時間:2014-11-08 08:01:17 閱讀次數(shù):1805次
Android提供的系統(tǒng)服務之--SmsManager(短信管理器)
--轉載請注明出處:coder-pig
SmsManager相干介紹和使用圖解:

固然為了方便各位,把代碼粘1粘吧,就不用麻煩大家寫代碼了:
有需要的時候就復制粘貼下吧!
1)調(diào)用系統(tǒng)發(fā)送短信的功能:
public void SendSMSTo(String phoneNumber,String message){
//判斷輸入的phoneNumber是不是為合法電話號碼
if(PhoneNumberUtils.isGlobalPhoneNumber(phoneNumber)){
//Uri.parse("smsto") 這里是轉換為指定Uri,固定寫法
Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:"+phoneNumber));
intent.putExtra("sms_body", message);
startActivity(intent);
}
}
2)調(diào)用系統(tǒng)提供的短信接口發(fā)送短信:
public void sendSMS(String phoneNumber,String message){
//獲得短信管理器
android.telephony.SmsManager smsManager = android.telephony.SmsManager.getDefault();
//拆分短信內(nèi)容(手機短信長度限制),貌似長度限制為140個字符,就是
//只能發(fā)送70個漢字,多了要拆分成多條短信發(fā)送
//第45個參數(shù),如果沒有需要監(jiān)聽發(fā)送狀態(tài)與接收狀態(tài)的話可以寫null
List<String> divideContents = smsManager.divideMessage(message);
for (String text : divideContents) {
smsManager.sendTextMessage(phoneNumber, null, text, sentPI, deliverPI);
}
}
處理發(fā)送狀態(tài)的PendingIntent:
//處理返回的發(fā)送狀態(tài)
String SENT_SMS_ACTION = "SENT_SMS_ACTION";
Intent sentIntent = new Intent(SENT_SMS_ACTION);
PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, sentIntent, 0);
//注冊發(fā)送信息的廣播接收者
context.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context _context, Intent _intent) {
switch (getResultCode()) {
case Activity.RESULT_OK:
Toast.makeText(context, "短信發(fā)送成功", Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE: //普通毛病
break;
case SmsManager.RESULT_ERROR_RADIO_OFF: //無線廣播被明確地關閉
break;
case SmsManager.RESULT_ERROR_NULL_PDU: //沒有提供pdu
break;
case SmsManager.RESULT_ERROR_NO_SERVICE: //服務當前不可用
break;
}
}
}, new IntentFilter(SENT_SMS_ACTION));
處理接收狀態(tài)的PendingIntent:
//處理返回的接收狀態(tài)
String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION";
//創(chuàng)建接收返回的接收狀態(tài)的Intent
Intent deliverIntent = new Intent(DELIVERED_SMS_ACTION);
PendingIntent deliverPI = PendingIntent.getBroadcast(context, 0,deliverIntent, 0);
context.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context _context, Intent _intent) {
Toast.makeText(context,"收信人已成功接收", Toast.LENGTH_SHORT).show();
}
}, new IntentFilter(DELIVERED_SMS_ACTION));
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈