Android创建简单发送和接收短信应用

本文实例为大家分享了Android创建发送和接收短信应用的简单实现过程,供大家参考,具体内容如下

一、接收短信

项目的结构如下:一个简单的接收和发送短信的功能

1、定义一个接收短信的广播:当手机接收到一条短信的时候,系统会发出一条值为android.provider.Telephony.SMS_RECEIVED 的广播,这条广播里携带着与短信相关的所有数据。

// 接收短信的广播 class MessageReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); Object[] pdus = (Object[]) bundle.get("pdus"); // 提取短信消息 SmsMessage[] messages = new SmsMessage[pdus.length]; for (int i = 0; i < messages.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); } String address = messages[0].getOriginatingAddress(); // 获取发送方号码 String fullMessage = ""; for (SmsMessage message : messages) { fullMessage += message.getMessageBody(); // 获取短信内容 } textView.setText("address; " + address + ", message: " + fullMessage); abortBroadcast(); } }

2、 注册广播,这里我们动态在代码中注册:

// 注册接收广播 IntentFilter intentFilter1 = new IntentFilter(); intentFilter1.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); intentFilter1.addAction("android.provider.Telephony.SMS_RECEIVED"); messageReceiver = new MessageReceiver(); registerReceiver(messageReceiver, intentFilter1);

3、 声明权限:

<uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.RECEIVE_SMS" />

二、发送短信

1、 发送短信:用getDefault方法得到SmsManager对象,调用sendTextMessage方法发送短信

// 发送短信 public void send(View view) { SmsManager smsManager = SmsManager.getDefault(); String destinationAddress = "15527100207"; String text = "我爱你!"; Intent intent1 = new Intent(SENT_SMS_ACTION); PendingIntent sentIntent = PendingIntent.getBroadcast(this, 0, intent1, 0); Intent intent2 = new Intent(DELIVERY_SMS_ACTION); PendingIntent deliveryIntent = PendingIntent.getBroadcast(this, 0, intent2, 0); smsManager.sendTextMessage(destinationAddress, null, text, sentIntent, deliveryIntent); // aidl服务,进程间的通信 }

我们具体了解一下sendTextMessage方法一个参数的含义:

public void sendTextMessage(String destinationAddress, String scAddress, String text,PendingIntent sentIntent, PendingIntent deliveryIntent) destinationAddress: // 目的地,也就是对方的手机号 scAddress: // 服务中心地址,为空的话就是默认的SMSC text: // 发送消息的具体内容 sentIntent: // 当消息成功或者失败发送时,就发起这个广播 deliveryIntent: // 当消息到达目的地时,就发起这个广播

2、 sentIntent的广播:

// 发送短信的状态广播 class MessageBroadcast extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 一个10位数的号码发送,也能成功,但是对方没有接收短信。 if (getResultCode() == RESULT_OK) { Toast.makeText(MainActivity.this, "发送成功!", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "发送失败!", Toast.LENGTH_SHORT).show(); } } }

3、 deliveryIntent的广播:

// 当消息被传递给收件人时 class DeliveryBroadcast extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(MainActivity.this, "对方接收短信成功!", Toast.LENGTH_SHORT).show(); } }

以上就是本文的全部内容,希望对大家的学习有所帮助。

时间: 2024-08-02 23:16:12

Android创建简单发送和接收短信应用的相关文章

C#调用联通短信平台SGIP.DLL如何接收短信?有经验高手请进

问题描述 本人最近在做一个联通短信平台,用于发送和接收短信,现发送模块OK,但接收的总搞不定,请各位高手帮忙并指教!本程序参考于http://topic.csdn.net/t/20040416/10/2972009.htmlhttp://bbs.spforum.net/viewthread.php?tid=173763&extra=page%3D23发送的程序调用Startup()连接成功后直接调用Submit()进行发送OK问题1:如何做能接收到短信?对于FProcessDeliver,FPr

android 广播-android 如何接收短信

问题描述 android 如何接收短信 if (bundle != null) { Object[] pdus = (Object[]) bundle.get("pdus"); SmsMessage[] mges = new SmsMessage[pdus.length]; for (int i = 0; i < pdus.length; i++) { mges[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); } for (Sms

Android开发时在模拟器之间短信的收发详解教程

本文通过运行两个Android模拟器,介绍在Android中如何实现短信服务(SMS,short message service)的功能.通过这个例子,我想带给大家的是:更加熟悉之前介绍过的Android应用程序的概念及技术细节,且通过实例调度大家的兴趣.我之所以选择SMS为例子,主要原因是SMS已经非常成熟了,从中可以发掘更多的信息和技术细节,而且我相信大部分人发短信比打电话多. 1.温故知新 广播接收者:一个广播接收者是这样一个组件,它不做什么事,仅是接受广播公告并作出相应的反应.许多广播源

Android开发工程中集成mob短信验证码功能的方法_Android

一.前言 现在的app基本上都需要用到短信功能,注册时或者有消息通知时需要给用户发送一条短信,但是对于个人开发者来说,去买第三方的短信服务实在是有点奢侈,很好的是mob为我们提供了免费的短信验证码服务功能,我不是打广告,的确觉得这项服务很不错.那么下面就简单讲一下如何在自己的工程里集成mob的短信功能,其实整个流程并不复杂,只是个人觉得mob的官方文档有点小乱,官方Demo也有点小复杂,同时有一些细节地方容易被忽视,也会导致一些问题. PS:太喜欢mob的logo了. 二.实现过程 本篇只涉及A

浅析Android手机卫士之手机实现短信指令获取位置_Android

推荐阅读: 浅析Android手机卫士sim卡绑定 深入浅析Android手机卫士保存密码时进行md5加密 详解Android 手机卫士设置向导页面 浅析Android手机卫士关闭自动更新 浅析Android手机卫士自定义控件的属性 浅析Android手机卫士读取联系人 浅析Android手机卫士接收短信指令执行相应操作 浅析Android手机卫士手机定位的原理 获取位置 新建一个service的包 新建一个GPSService类继承系统的Service类 清单文件中注册一下 重写onCreat

Android黑科技之读取用户短信+修改系统短信数据库_Android

安卓系统比起ios系统最大的缺点,相信大家都知道,就是系统安全问题.这篇博客就秀一波"黑科技". 读取用户短信 Android应用能读取用户手机上的短信,相信已经不是什么新鲜事,比如我们收到的短信验证码,一些app马上就能自动获取并填上验证码,省去我们手动填写验证码.原理就是通过Android的ContentProvider组件间接访问系统的短信数据库,获取所有短信内容.下面来演示一下.         布局很简单,如下:   代码如下: public class MainActivi

Android模拟器上模拟来电和短信配置

在Android模拟器上模拟来电 项目需求要做一个控制来电显示的Android 应用,那么我们就需要在Emulator上模拟来电效果了,下面来看看如何实现Android模拟器上模拟来电 方法如下:1.单个电话 打开命令行cmd,输入telnet 回车.然后输入 o localhost 5554 回车,连到Emulator上.输入gsm call 123456 上面显示OK这时再去看模拟器,上面就有来电了.其他:挂断电话:gsm cancel <模拟打进的电话号码>设置其他模式:gsm voic

系统广播详解之接收短信

上一次讲解了系统开机自动运行的广播,这次讲解系统广播中的SMS广播. 1.编写一个系统广播接收类 public class SMSReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if ("android.provider.Telephony.SMS_RECEIVED" .equals(intent.getAction())) {

Android开发工程中集成mob短信验证码功能的方法

一.前言 现在的app基本上都需要用到短信功能,注册时或者有消息通知时需要给用户发送一条短信,但是对于个人开发者来说,去买第三方的短信服务实在是有点奢侈,很好的是mob为我们提供了免费的短信验证码服务功能,我不是打广告,的确觉得这项服务很不错.那么下面就简单讲一下如何在自己的工程里集成mob的短信功能,其实整个流程并不复杂,只是个人觉得mob的官方文档有点小乱,官方Demo也有点小复杂,同时有一些细节地方容易被忽视,也会导致一些问题. PS:太喜欢mob的logo了. 二.实现过程 本篇只涉及A