android发送短信,以及接收报告和发送报告
android中发送短信其实有两种方式,这个和打电话类似,大家可以了解一下:
一、调起系统发短信功能
代码如下:
/**
* 调起系统发短信功能
* @param phoneNumber 发送短信的接收号码
* @param message 短信内容
*/
public void SendSMS(String phoneNumber,String message){
Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:"+phoneNumber));
intent.putExtra("sms_body", message);
startActivity(intent);
}
二、调用系统短信接口直接发送短信
首先先介绍一下,发送短信相关的api,主要依靠的是
sendTextMessage (String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)
destinationAddress 发送短信的地址(也就是号码)
scAddress 短信服务中心,如果为null,就是用当前默认的短信服务中心
text 短信内容
sentIntent 如果不为null,当短信发送成功或者失败时,这个PendingIntent会被广播出去成功的结果代码是Activity.RESULT_OK,或者下面这些错误之一 :RESULT_ERROR_GENERIC_FAILURE,RESULT_ERROR_RADIO_OFF,RESULT_ERROR_NULL_PDU等
通俗点说: 发送 -->中国移动 --> 中国移动发送失败 --> 返回发送成功或失败信号 --> 后续处理 即,这个意图包装了短信发送状态的信息
deliveryIntent 如果不为null,当这个短信发送到接收者那里,这个PendtingIntent会被广播,状态报告生成的pdu(指对等层次之间传递的数据单位)会拓展到数据("pdu")
通俗点就是:发送 -->中国电信 --> 中国电信发送成功 --> 返回对方是否收到这个信息 --> 后续处理 即:这个意图包装了短信是否被对方收到的状态信息(供应商已经发送成功,但是对方没有收到)。
正式开始操作
1.首先要添加权限!
<uses-permission android:name="android.permission.SEND_SMS" />
/**
* 直接调用短信接口发短信,不含发送报告和接受报告
*
* @param phoneNumber
* @param message
*/
public void sendSMS(String phoneNumber, String message) {
// 获取短信管理器
android.telephony.SmsManager smsManager = android.telephony.SmsManager.getDefault();
// 拆分短信内容(手机短信长度限制)
List<String> divideContents = smsManager.divideMessage(message);
for (String text : divideContents) {
smsManager.sendTextMessage(phoneNumber, null, text, null, null);
}
}
(2)如果你需要发送报告和接收报告,那么我们开始:
我们先定义两个接受方法,用作接收发送报告以及接收报告
发送报告
//处理返回的发送状态
String SENT_SMS_ACTION = "SENT_SMS_ACTION";
Intent sentIntent = new Intent(SENT_SMS_ACTION);
PendingIntent sendIntent= PendingIntent.getBroadcast(context, 0, sentIntent,
0);
// register the Broadcast Receivers
context.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context _context, Intent _intent) {
switch (getResultCode()) {
case Activity.RESULT_OK:
Toast.makeText(context,
"短信发送成功", 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:
break;
}
}
}, new IntentFilter(SENT_SMS_ACTION));
接收报告
//处理返回的接收状态
String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION";
// create the deilverIntent parameter
Intent deliverIntent = new Intent(DELIVERED_SMS_ACTION);
PendingIntent backIntent= 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));
发送短信代码:
/**
* 调用短信接口发短信,含接收报告和发送报告
*
* @param phoneNumber
* @param message
*/
public void sendSMS(String phoneNumber, String message) {
// 获取短信管理器
android.telephony.SmsManager smsManager = android.telephony.SmsManager.getDefault();
// 拆分短信内容(手机短信长度限制)
List<String> divideContents = smsManager.divideMessage(message);
for (String text : divideContents) {
smsManager.sendTextMessage(phoneNumber, null, text, sendIntent, backIntent);
}
}
分享到:
相关推荐
在Android平台上,发送短信是应用程序与用户交互的重要方式之一,主要分为两种方法:直接调用系统短信接口发送和启动系统短信应用。这两种方法各有特点,适用于不同的场景。 1. 调用系统短信接口直接发送短信 这种...
2. 使用`WorkManager`或`JobScheduler`:这两种是Android提供的后台任务调度器,可以在合适的时机执行你的任务。 3. 如果可能,尽量让发送短信的操作与用户交互相关联,避免在应用完全后台运行时发送。 同时,考虑...
总结起来,这个Android案例展示了如何利用Intent来拨打电话和发送短信。通过理解Intent的工作原理和权限管理,开发者可以轻松地将这些功能集成到自己的应用程序中,为用户提供更丰富的交互体验。在实际开发中,根据...
接下来,使用`SmsManager`发送短信有两种方式:直接发送和分段发送。对于较短的消息,可以直接发送: ```java smsManager.sendTextMessage(phoneNumber, null, message, null, null); ``` 这里,`null`参数表示...
这个"Android短信发送源码"示例为你提供了一种简单易懂的方法来实现这一功能。下面将详细讲解相关知识点,包括Android SMS API的使用、权限管理以及实际的代码实现。 首先,Android系统为发送短信提供了`SmsManager...
Android 短信SMS发送代码流程是 Android 操作系统中的一种重要功能,允许用户发送短信给其他用户。本文将详细介绍 Android 短信SMS发送代码流程的实现机制。 Messaging 应用层 在 Android 中,短信发送功能是通过 ...
3. **获取天气预报**:获取天气预报信息通常有两种方式:一是使用第三方天气API,如OpenWeatherMap、AccuWeather等,这些API提供了JSON或XML格式的天气数据,可以通过HTTP请求获取;二是使用内置的天气服务,如果有...
5. **发送短信**:有两种方式发送短信,根据需求选择合适的方法: - **单个接收者**:使用`sendTextMessage()`方法。 ```java smsManager.sendTextMessage(recipient, null, message, null, null); ``` - **多...
在Android平台上,开发一个简易的短信管理器是常见的任务,涉及到的主要知识点包括Android系统的权限管理、BroadcastReceiver(广播接收者)、SMSManager类以及UI设计。下面将详细解释这些概念及其在实现短信管理器...
在Android系统中,有两种主要的方法来发送短信。第一种是通过直接调用系统短信接口,而第二种则是启动系统的短信发送界面。...以上就是Android中调用接口发送短信的两种方式,开发者可以根据实际需求选择合适的方法。
3. 发送短信有两种方式:分段发送和一次性发送。如果短信内容过长,`SmsManager`会自动将其拆分为多个短信分段。分段发送代码如下: ```java ArrayList<String> parts = smsManager.divideMessage(message); for ...
该协议的版本为1.2,它包含了上行和下行两个主要部分,分别对应于短信的发送和接收过程。 上行接口是SP向短信网关发送短信请求的部分。在这个过程中,SP通过SGIP协议将要发送的短信内容、目标手机号码、短信类型等...
在提供的源码中,可能包含了广播接收器的创建、注册、IntentFilter的设置以及onReceive()方法的实现等内容,通过分析这些代码,你可以深入理解Android广播接收器的工作原理和用法。如果源码包含了一些特殊功能或优化...
短信接收器是一种能够监听并处理短信的应用程序,而接码则是指接收短信验证码的过程,这种验证码通常用于身份验证或防止欺诈行为。下面将详细讨论这两个概念以及它们在实际应用中的工作原理。 短信接收器: 短信...
使用`SmsManager`的`getDefault()`方法获取短信管理器实例,然后调用`sendTextMessage`方法,传入接收者的电话号码、短信内容、发送者的应用信息以及两个回调接口(用于处理发送成功和失败的情况)。 4. **...
Android中短信的收发主要依赖于`SmsManager`类,该类提供了一系列用于发送和接收短信的方法。 ##### 1. SmsManager类 `SmsManager`类是Android提供的用于发送和接收短信的核心API。其主要成员包括: - **公有方法...
此外,为了实现发送短信验证码和接收验证码的功能,还需要在AndroidManifest.xml中添加一些必要的权限,例如读取联系人、读取手机状态、写外部存储、访问网络状态等,以及与短信相关的权限: ```xml ...
本文总结了基于Android的广播接收器的设计与应用,介绍了广播接收器的概念、分类、生命周期以及自定义广播的发送和接收过程,为开发者提供了有价值的参考文献。 关键词:广播、广播接收器、resident broadcast、non...
在Android平台上,短信服务是操作系统的核心组件之一,它允许用户发送和接收文本消息。当用户发送短信时,系统默认会将这些短信存储到内置的短信数据库中,以便于用户查看和管理。然而,有时开发者可能需要自定义...
在这个“Android中采用广播接收者实现短信监控器、拦截外拨电话功能案例”中,我们将探讨如何利用BroadcastReceiver来监控手机中的短信和电话事件。 首先,我们需要创建一个BroadcastReceiver的子类,比如`...