`

android 发送短信的两种方式

阅读更多
android中可以通过两种方式发送短信

第一:调用系统短信接口直接发送短信;主要代码如下:

/**
	 * 直接调用短信接口发短信
	 * @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, sentPI, deliverPI);  
		}
	}



第二:调起系统发短信功能;主要代码如下:
/**
	 * 调起系统发短信功能
	 * @param phoneNumber
	 * @param message
	 */
	public void doSendSMSTo(String phoneNumber,String message){
		if(PhoneNumberUtils.isGlobalPhoneNumber(phoneNumber)){
			Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:"+phoneNumber));          
			intent.putExtra("sms_body", message);          
			startActivity(intent);
		}
	}


别忘了权限:
<uses-permission android:name="android.permission.SEND_SMS" />

这里主要讲解第一种方法,第一种方法可以监控发送状态和对方接收状态。

处理返回的发送状态:
//处理返回的发送状态 
String SENT_SMS_ACTION = "SENT_SMS_ACTION";
Intent sentIntent = new Intent(SENT_SMS_ACTION);
PendingIntent sentPI = 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 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));



发送短信的参数说明:
smsManager.sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent)

-- destinationAddress:目标电话号码
-- scAddress:短信中心号码,测试可以不填
-- text: 短信内容
-- sentIntent:发送 -->中国移动 --> 中国移动发送失败 --> 返回发送成功或失败信号 --> 后续处理   即,这个意图包装了短信发送状态的信息
-- deliveryIntent: 发送 -->中国移动 --> 中国移动发送成功 --> 返回对方是否收到这个信息 --> 后续处理  即:这个意图包装了短信是否被对方收到的状态信息(供应商已经发送成功,但是对方没有收到)。
分享到:
评论
3 楼 ZHOU452840622 2017-06-19  
大神://处理返回的接收状态    这个好像没有监听到   遇到过这种问题吗  小米5
2 楼 一级苦工 2015-06-27  
一级苦工 写道
弱弱的问一句,第一种方法能监听到用户是否点击发送按钮并成功发送了吗?

说错了,是第二种
1 楼 一级苦工 2015-06-27  
弱弱的问一句,第一种方法能监听到用户是否点击发送按钮并成功发送了吗?

相关推荐

    Android之发送短信的两种方式

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

    Android手机后台发送短信

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

    SendSms.rar_android_android发送短信

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

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

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

    简易的android短信管理器代码

    注册BroadcastReceiver有两种方式:静态注册(在AndroidManifest.xml中)和动态注册(在代码中)。考虑到应用可能需要在后台接收短信,通常会使用静态注册。 3. **SMSManager**: SMSManager是Android提供的API,...

    Android短信发送源码

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

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

    在Android应用开发中,Intent是一种强大的机制,用于在组件之间传递消息并启动操作。本案例主要探讨如何利用Intent实现拨打电话和发送短信的功能。首先,我们需要理解Intent的基本概念。 Intent在Android系统中扮演...

    Android定时短信发送天气预报

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

    Android 短信SMS发送代码流程

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

    Android最基本的发短信打电话

    本文将深入探讨如何在Android应用中实现这两种通信方式。 首先,我们要了解Android的权限管理。在AndroidManifest.xml文件中,必须添加相应的权限声明,才能允许应用程序进行短信发送和电话拨打。对于发送短信,...

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

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

    Android自动发送短信.zip

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

    android读取短信验证码自动填入

    注册BroadcastReceiver有两种方式:静态注册和动态注册。静态注册在AndroidManifest.xml中进行,而动态注册则在代码中完成。考虑到权限请求,推荐动态注册。在Activity的onCreate方法中添加以下代码: ```java ...

    android手机短信的收发

    - **广播类型**:主要有两种类型的广播,分别是**正常广播**和**有序广播**。 - **正常广播**:完全异步执行,效率高但无法传递结果或终止广播数据传播。 - **有序广播**:按顺序执行,允许当前接收者控制是否继续...

    Android短信倒计时Demo

    `CountDownTimer`是Android SDK提供的一种定时器类,它能进行倒计时操作,并且在每个间隔时间结束后执行特定的回调方法。这个类有两个构造函数,分别是: ```java public CountDownTimer(long millisInFuture, long...

    Android短信过滤

    有两种主要方式实现后台运行: 1. **Service**:创建一个Service,启动后持续运行。在Service中注册BroadcastReceiver,这样即使应用主界面关闭,BroadcastReceiver也能接收到短信广播。 2. **IntentService**:...

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

    在Android应用开发中,短信验证码是一种常见的用户身份验证机制,用于确保用户提供的手机号码真实有效。本篇文章将详细介绍如何利用Mob SDK在Android应用中实现发送短信验证码的功能。 首先,我们需要在Mob官网...

    Android中监听短信的两种方法

    在Android系统中,监听短信通常有两种方法:通过注册BroadcastReceiver监听SMS_RECEIVED_ACTION广播和使用ContentObserver监控短信数据库。这两种方法各有优缺点,下面将详细解释它们的工作原理和实现方式。 1. ...

    二个android模拟器互发短信程序演示

    Android 模拟器互发短信程序演示是一种基于 Android 平台的短信发送程序,该程序可以在两个 Android 模拟器之间互发短信。下面是该程序的详细介绍: 一、创建 Android 工程 在创建 Android 工程时,我们需要指定...

Global site tag (gtag.js) - Google Analytics