转:Android 发送短信的方法
16lz
2021-01-23
android中可以通过两种方式发送短信
Java代码
第二:调起系统发短信功能;主要代码如下:
Java代码
别忘了权限:
<uses-permission android:name="android.permission.SEND_SMS" />
这里主要讲解第一种方法,第一种方法可以监控发送状态和对方接收状态。
处理返回的发送状态:
Java代码
处理返回的接收状态 :
Java代码
发送短信的参数说明:
Java代码
-- destinationAddress:目标电话号码
-- scAddress:短信中心号码,测试可以不填
-- text: 短信内容
-- sentIntent:发送 -->中国移动 --> 中国移动发送失败 --> 返回发送成功或失败信号 --> 后续处理 即,这个意图包装了短信发送状态的信息
-- deliveryIntent: 发送 -->中国移动 --> 中国移动发送成功 --> 返回对方是否收到这个信息 --> 后续处理 即:这个意图包装了短信是否被对方收到的状态信息(供应商已经发送成功,但是对方没有收到)。
http://gundumw100.iteye.com/blog/1774899
Java代码
- /**
- *直接调用短信接口发短信
- *@paramphoneNumber
- *@parammessage
- */
- publicvoidsendSMS(StringphoneNumber,Stringmessage){
- //获取短信管理器
- android.telephony.SmsManagersmsManager=android.telephony.SmsManager.getDefault();
- //拆分短信内容(手机短信长度限制)
- List<String>divideContents=smsManager.divideMessage(message);
- for(Stringtext:divideContents){
- smsManager.sendTextMessage(phoneNumber,null,text,sentPI,deliverPI);
- }
- }
第二:调起系统发短信功能;主要代码如下:
Java代码
- /**
- *调起系统发短信功能
- *@paramphoneNumber
- *@parammessage
- */
- publicvoiddoSendSMSTo(StringphoneNumber,Stringmessage){
- if(PhoneNumberUtils.isGlobalPhoneNumber(phoneNumber)){
- Intentintent=newIntent(Intent.ACTION_SENDTO,Uri.parse("smsto:"+phoneNumber));
- intent.putExtra("sms_body",message);
- startActivity(intent);
- }
- }
别忘了权限:
<uses-permission android:name="android.permission.SEND_SMS" />
这里主要讲解第一种方法,第一种方法可以监控发送状态和对方接收状态。
处理返回的发送状态:
Java代码
- //处理返回的发送状态
- StringSENT_SMS_ACTION="SENT_SMS_ACTION";
- IntentsentIntent=newIntent(SENT_SMS_ACTION);
- PendingIntentsentPI=PendingIntent.getBroadcast(context,0,sentIntent,
- 0);
- //registertheBroadcastReceivers
- context.registerReceiver(newBroadcastReceiver(){
- @Override
- publicvoidonReceive(Context_context,Intent_intent){
- switch(getResultCode()){
- caseActivity.RESULT_OK:
- Toast.makeText(context,
- "短信发送成功",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));
处理返回的接收状态 :
Java代码
- //处理返回的接收状态
- StringDELIVERED_SMS_ACTION="DELIVERED_SMS_ACTION";
- //createthedeilverIntentparameter
- IntentdeliverIntent=newIntent(DELIVERED_SMS_ACTION);
- PendingIntentdeliverPI=PendingIntent.getBroadcast(context,0,
- deliverIntent,0);
- context.registerReceiver(newBroadcastReceiver(){
- @Override
- publicvoidonReceive(Context_context,Intent_intent){
- Toast.makeText(context,
- "收信人已经成功接收",Toast.LENGTH_SHORT)
- .show();
- }
- },newIntentFilter(DELIVERED_SMS_ACTION));
发送短信的参数说明:
Java代码
- smsManager.sendTextMessage(destinationAddress,scAddress,text,sentIntent,deliveryIntent)
-- destinationAddress:目标电话号码
-- scAddress:短信中心号码,测试可以不填
-- text: 短信内容
-- sentIntent:发送 -->中国移动 --> 中国移动发送失败 --> 返回发送成功或失败信号 --> 后续处理 即,这个意图包装了短信发送状态的信息
-- deliveryIntent: 发送 -->中国移动 --> 中国移动发送成功 --> 返回对方是否收到这个信息 --> 后续处理 即:这个意图包装了短信是否被对方收到的状态信息(供应商已经发送成功,但是对方没有收到)。
更多相关文章
- android中去掉标题栏和状态栏
- Android 5.1源代码与Nexus设备工厂镜像下载
- android 判断网络状态
- Android 自音乐播放器源代码
- 【黑马Android】(02)短信发送器/布局演示/android下单位/android
- Android实现简单短信发送器
- android中去掉listview某人选中高亮状态
- 让Android支持透明状态栏
- Android Jni代码示例讲解