软件编程
位置:首页>> 软件编程>> Android编程>> Android创建简单发送和接收短信应用

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

作者:lijiao  发布时间:2022-01-04 18:31:08 

标签:Android,发送,接收,短信

本文实例为大家分享了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();
 }
}
0
投稿

猜你喜欢

  • 1. 简介zookeeper是一个开源的分布式协调服务, 提供分布式数据一致性解决方案,分布式应用程序可以实现数据统一配置管理、统一命名服务
  • 无论是我们在使用word还是记事本,系统都会为我们提供撤销的功能,这几乎是人人都会使用到的功能,而在我们实际开发中,会不会存在一个很复杂的对
  • 一、Feign简介Feign是netflix开发的声明式、模板化的http客户端,在使用时就像调用本地(服务消费者自己)的方法一般,帮助我们
  • 先介绍去掉标题栏的方法: 第一种:也一般入门的时候经常使用的一种方法 requestWindowFeature(Window.FEATURE
  • 实例:用户输入一个日期,要求输出这个日期是星期几和在这一年中的第几天://声明一个DateTime类型的变量用于存放用户输入的日期DateT
  • 一、微服务简介 Ⅰ、我对微服务的理解微服务是软件开发的一种架构方式,由单一的应用小程序构成的小服务;一个软件系统由多个服务组成;在微服务中,
  • 想问下这是什么情况。在导入一个maven项目时只有一个finish,点击完finish后没有任何反应。。。各位大佬给看下这是什么问题。急,在
  • 本文在实现雪花效果的基础上,根据漫天飞舞雪花,实现下雨天场景的效果,使用eclipse android 版本,具体内容如下雪花效果图:具体代
  • 众所周知,PDF文档除了具有较强稳定性和兼容性外, 还具有较强的安全性,在工作中可以有效避免别人无意中对文档内容进行修改。但与此同
  • 指纹识别作为最新兴起的用户身份验证机制,已经被越来越多的应用程序所采用,相比传统的密码九宫格等验证方法,指纹识别更加安全,如今越来越多的安卓
  • Spring整合Myabtis思路的分析引入相关依赖SpringMyabtismysqlMybatsi-spring&hellip;
  • 水印种类及功能介绍 PDF水印分为两种:文本水印和图片水印。文本水印一般被用在商业领域,提醒读者该文档是受版权保护的,其他人不能抄
  • 一、Images1、概述Image 类为Bitmap(位图) 和 Metafile(矢量图) 的类提供功能的抽象基类。Image类不能直接创
  • maven插件主要是为maven中生命周期中的阶段服务的,maven中只是定义了3套生命周期,以及每套生命周期中有哪些阶段,具体每个阶段中执
  • 背景kafka有分区机制,一个主题topic在创建的时候,会设置分区。如果只有一个分区,那所有的消费者都订阅的是这一个分区消息;如果有多个分
  • TTL简介TTL 是什么呢?TTL 是 RabbitMQ 中一个消息或者队列的属性,表明一条消息或者该队列中的所有消息的最大存活时间,单位是
  • 相信很多朋友在使用Android studio开发中,遇到过如何引入第三方so文件的问题,然而第三方官方仅仅给出了ADT环境下的集成方式。A
  • 概述本篇文章主要讲解下Map家族中3个相对冷门的容器,分别是WeakHashMap、EnumMap、IdentityHashMap, 想必大
  • 介绍fastjson 1.2.0之后的版本支持JSONPath。,可以在java框架中当作json对象查询语言(OQL)来使用。常用APIp
  • 本文实例讲述了C#实现异步GET的方法。分享给大家供大家参考。具体实现方法如下:using System;using System.Coll
手机版 软件编程 asp之家 www.aspxhome.com