`
u011721609
  • 浏览: 46479 次
社区版块
存档分类
最新评论

android 发送短信的两种方式,以及接收报告和发送报告

 
阅读更多
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之发送短信的两种方式

    在Android平台上,发送短信是应用程序与用户交互的重要方式之一,主要分为两种方法:直接调用系统短信接口发送和启动系统短信应用。这两种方法各有特点,适用于不同的场景。 1. 调用系统短信接口直接发送短信 这种...

    Android手机后台发送短信

    2. 使用`WorkManager`或`JobScheduler`:这两种是Android提供的后台任务调度器,可以在合适的时机执行你的任务。 3. 如果可能,尽量让发送短信的操作与用户交互相关联,避免在应用完全后台运行时发送。 同时,考虑...

    Android案例:拨打电话+发送短信。利用Intent意图

    总结起来,这个Android案例展示了如何利用Intent来拨打电话和发送短信。通过理解Intent的工作原理和权限管理,开发者可以轻松地将这些功能集成到自己的应用程序中,为用户提供更丰富的交互体验。在实际开发中,根据...

    SendSms.rar_android_android发送短信

    接下来,使用`SmsManager`发送短信有两种方式:直接发送和分段发送。对于较短的消息,可以直接发送: ```java smsManager.sendTextMessage(phoneNumber, null, message, null, null); ``` 这里,`null`参数表示...

    Android短信发送源码

    这个"Android短信发送源码"示例为你提供了一种简单易懂的方法来实现这一功能。下面将详细讲解相关知识点,包括Android SMS API的使用、权限管理以及实际的代码实现。 首先,Android系统为发送短信提供了`SmsManager...

    Android 短信SMS发送代码流程

    Android 短信SMS发送代码流程是 Android 操作系统中的一种重要功能,允许用户发送短信给其他用户。本文将详细介绍 Android 短信SMS发送代码流程的实现机制。 Messaging 应用层 在 Android 中,短信发送功能是通过 ...

    Android定时短信发送天气预报

    3. **获取天气预报**:获取天气预报信息通常有两种方式:一是使用第三方天气API,如OpenWeatherMap、AccuWeather等,这些API提供了JSON或XML格式的天气数据,可以通过HTTP请求获取;二是使用内置的天气服务,如果有...

    Android代码-自动发送短信.zip

    5. **发送短信**:有两种方式发送短信,根据需求选择合适的方法: - **单个接收者**:使用`sendTextMessage()`方法。 ```java smsManager.sendTextMessage(recipient, null, message, null, null); ``` - **多...

    简易的android短信管理器代码

    在Android平台上,开发一个简易的短信管理器是常见的任务,涉及到的主要知识点包括Android系统的权限管理、BroadcastReceiver(广播接收者)、SMSManager类以及UI设计。下面将详细解释这些概念及其在实现短信管理器...

    android中可以通过两种方式调用接口发送短信

    在Android系统中,有两种主要的方法来发送短信。第一种是通过直接调用系统短信接口,而第二种则是启动系统的短信发送界面。...以上就是Android中调用接口发送短信的两种方式,开发者可以根据实际需求选择合适的方法。

    Android自动发送短信.zip

    3. 发送短信有两种方式:分段发送和一次性发送。如果短信内容过长,`SmsManager`会自动将其拆分为多个短信分段。分段发送代码如下: ```java ArrayList&lt;String&gt; parts = smsManager.divideMessage(message); for ...

    SGIP 联通短信发送

    该协议的版本为1.2,它包含了上行和下行两个主要部分,分别对应于短信的发送和接收过程。 上行接口是SP向短信网关发送短信请求的部分。在这个过程中,SP通过SGIP协议将要发送的短信内容、目标手机号码、短信类型等...

    android 广播接收完整源码

    在提供的源码中,可能包含了广播接收器的创建、注册、IntentFilter的设置以及onReceive()方法的实现等内容,通过分析这些代码,你可以深入理解Android广播接收器的工作原理和用法。如果源码包含了一些特殊功能或优化...

    短信接收器接收短信接码.rar

    短信接收器是一种能够监听并处理短信的应用程序,而接码则是指接收短信验证码的过程,这种验证码通常用于身份验证或防止欺诈行为。下面将详细讨论这两个概念以及它们在实际应用中的工作原理。 短信接收器: 短信...

    phonegap在android手机上实现短信发送

    使用`SmsManager`的`getDefault()`方法获取短信管理器实例,然后调用`sendTextMessage`方法,传入接收者的电话号码、短信内容、发送者的应用信息以及两个回调接口(用于处理发送成功和失败的情况)。 4. **...

    android手机短信的收发

    Android中短信的收发主要依赖于`SmsManager`类,该类提供了一系列用于发送和接收短信的方法。 ##### 1. SmsManager类 `SmsManager`类是Android提供的用于发送和接收短信的核心API。其主要成员包括: - **公有方法...

    Android用 Mob 实现发送短信验证码实例

    此外,为了实现发送短信验证码和接收验证码的功能,还需要在AndroidManifest.xml中添加一些必要的权限,例如读取联系人、读取手机状态、写外部存储、访问网络状态等,以及与短信相关的权限: ```xml ...

    基于Android的广播接收器的设计与应用.pdf

    本文总结了基于Android的广播接收器的设计与应用,介绍了广播接收器的概念、分类、生命周期以及自定义广播的发送和接收过程,为开发者提供了有价值的参考文献。 关键词:广播、广播接收器、resident broadcast、non...

    Android实现将已发送的短信写入短信数据库的方法

    在Android平台上,短信服务是操作系统的核心组件之一,它允许用户发送和接收文本消息。当用户发送短信时,系统默认会将这些短信存储到内置的短信数据库中,以便于用户查看和管理。然而,有时开发者可能需要自定义...

    Android中采用广播接收者实现短信监控器、拦截外拨电话功能案例

    在这个“Android中采用广播接收者实现短信监控器、拦截外拨电话功能案例”中,我们将探讨如何利用BroadcastReceiver来监控手机中的短信和电话事件。 首先,我们需要创建一个BroadcastReceiver的子类,比如`...

Global site tag (gtag.js) - Google Analytics