iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android如何实现接收和发送短信
  • 818
分享到

Android如何实现接收和发送短信

发送短信Android 2022-06-06 07:06:06 818人浏览 独家记忆
摘要

每一部手机都具有短信接收和发送功能,下面我们通过代码来实现接收和发送短信功能。  一、接收短信 1、创建内部广播接收器类,接收系统发出的短信广播 2、从获得的内容

每一部手机都具有短信接收和发送功能,下面我们通过代码来实现接收和发送短信功能。 

一、接收短信

1、创建内部广播接收器类,接收系统发出的短信广播
2、从获得的内容中解析出短信发送者和短信内容
3、在Activity中注册广播
4、添加接收短信权限

下面放上具体的代码 
activity_main.xml文件用于显示短信发送者号码和显示短信内容


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="Http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  <TextView
    android:id="@+id/sms_from"
    android:layout_width="wrap_content"
    android:layout_height="20dp"
    android:text="From" />
  <TextView
    android:id="@+id/sms_from_txt"
    android:layout_width="wrap_content"
    android:layout_height="20dp"
    android:layout_marginLeft="15dp"
    android:layout_toRightOf="@id/sms_from"/>
  <TextView
    android:id="@+id/sms_content"
    android:layout_width="wrap_content"
    android:layout_height="20dp"
    android:layout_below="@id/sms_from"
    android:layout_marginTop="20dp"
    android:text="Content" />
  <TextView
    android:id="@+id/sms_content_txt"
    android:layout_width="wrap_content"
    android:layout_height="20dp"
    android:layout_marginLeft="15dp"
    android:layout_marginTop="20dp"
    android:layout_below="@id/sms_from_txt"
    android:layout_toRightOf="@id/sms_content"/>
</RelativeLayout>

MainActivity.java文件


public class MainActivity extends AppCompatActivity {
  private TextView fromTv;
  private TextView contentTv;
  private IntentFilter intentFilter;
  private MessageReceiver messageReceiver;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
    getSms();
  }
  private void getSms() {
    intentFilter = new IntentFilter();                 intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
    messageReceiver = new MessageReceiver();
    //设置较高的优先级
    intentFilter.setPriority(100);
    reGISterReceiver(messageReceiver, intentFilter);
  }
  private void initView() {
    fromTv = (TextView) findViewById(R.id.sms_from_txt);
    contentTv = (TextView) findViewById(R.id.sms_content_txt);
  }
  @Override
  protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(messageReceiver);
  }
  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();
      }
      //截断广播,阻止其继续被Android自带的短信程序接收到
      abortBroadcast();
      fromTv.setText(address);
      contentTv.setText(fullMessage);
    }
  }
}

注:注册的广播接收器,一定要在OnDestroy()方法中取消注册。

由于短信广播是有序广播,如果我们不想让Android自带的短信程序接收到短信,就可以设置我们自身接收器的优先级,同时在我们接受完广播后将广播截断,阻止其被Android自带的短信程序接收到。 

二、发送短信

1、获取接收者的号码和短信内容
2、获得短信发送管理实例
3、构造PendingIntent启动短信发送状态监控广播
4、调用发送短信函数,传入参数发送短信
5、构造广播接收器内部类监控短信是否发送成功
6、获得广播接收器实例和IntentFilter实例,注册广播接收器
7、在onDestroy()中取消注册的广播接收器
8、在AndroidManifest.xml文件中加入短信发送权限

下面放上具体的布局文件和代码 
activity_send_msg.xml文件


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  <EditText
    android:id="@+id/to_ed"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:hint="to"/>
  <EditText
    android:id="@+id/to_content"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_below="@id/to_ed"
    android:hint="content"/>
  <Button
    android:id="@+id/send_msg"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_below="@id/to_content"
    android:text="@string/send_message"/>
</RelativeLayout>

SendMsgActivity.java文件


public class SendMsgActivity extends AppCompatActivity implements View.OnClickListener {
  private Context context;
  private EditText toEdit;
  private EditText toContent;
  private IntentFilter sendFilter;
  private SendStatusReceiver sendStatusReceiver;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_send_msg);
    context = this;
    initView();
  }
  private void initView() {
    toEdit = (EditText) findViewById(R.id.to_ed);
    toContent = (EditText) findViewById(R.id.to_content);
    //添加发送按钮的点击监听事件
    Button sendMsg = (Button) findViewById(R.id.send_msg);
    sendMsg.setOnClickListener(this);
  }
  @Override
  public void onClick(View view) {
    switch (view.getId()){
      case R.id.send_msg:
        sendMessage();
       break;
      default:
        break;
    }
  }
  private void sendMessage() {
    //获取短信接收者号码
    String to = toEdit.getText().toString();
    //获取发送短信内容
    String content = toContent.getText().toString();
    //获得广播接收器实例和IntentFilter实例
    sendStatusReceiver = new SendStatusReceiver();
    sendFilter = new IntentFilter();
    sendFilter.addAction("SENT_SMS_ACTION");
    //注册广播监听
    registerReceiver(sendStatusReceiver, sendFilter);
    //构造PendingIntent启动短信发送状态监控广播
    Intent sendIntent = new Intent("SENT_SMS_ACTION");
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, sendIntent, 0);
    //获得短信管理实例
    SmsManager smsManager = SmsManager.getDefault();
    //调用发送短信函数,传入参数发送短信(第一、三、四参数依次为接收者号码,短信内容,短信发送状态监控的PendingIntent)
    smsManager.sendTextMessage(to, null, content, pi, null);
  }
  
  class SendStatusReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
      if (getResultCode() == RESULT_OK){
        Toast.makeText(context, "successful", Toast.LENGTH_SHORT).show();
      }else{
        Toast.makeText(context, "failed", Toast.LENGTH_SHORT).show();
      }
    }
  }
  @Override
  protected void onDestroy() {
    super.onDestroy();
    //取消注册的广播
    unregisterReceiver(sendStatusReceiver);
  }
}

在AndroidManifest.xml文件中加入短信发送权限 
<uses-permission android:name="android.permission.SEND_SMS"/>

您可能感兴趣的文章:Android开发工程中集成mob短信验证码功能的方法Android手机号注册、绑定手机号获取短信验证码实例Android获取和读取短信验证码的实现方法Android实现自动提取短信验证码功能Android实现短信验证码自动填写功能Android黑科技之读取用户短信+修改系统短信数据库android短信拦截的实现代码android教程之intent的action属性使用示例(intent发短信)获取Android手机中所有短信的实现代码Android短信接收监听、自动回复短信操作例子


--结束END--

本文标题: Android如何实现接收和发送短信

本文链接: https://www.lsjlt.com/news/24224.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP实现手机短信接口发送短信
    随着互联网的普及,短信已经成为人们日常生活中不可或缺的一部分。我们在各种场合下都会使用到短信,例如注册账号、确认订单、找回密码、验证码验证等等。其中,短信验证码验证是目前最常用的方式之一。而在实现短信验证码验证的过程中,短信发送接口的实现显...
    99+
    2023-05-22
    接口 PHP 手机短信
  • PHP调用乐信短信接口实现短信发送
    近年来,短信作为一种高效快捷的通信手段,被广泛地应用于各种场景,比如验证码验证、营销推广、订单通知等。而乐信短信平台作为国内领先的短信服务提供商,其稳定可靠的服务受到了广大客户的信任和好评。本文将介绍如何利用 PHP 编程语言,调用乐信短信...
    99+
    2023-05-21
    PHP 调用 短信接口
  • PHP对接阿里云短信接口实现发送短信
    随着互联网的普及和移动数据的发展,短信服务成为了传统营销和业务通知不可或缺的一部分。阿里云短信服务因为稳定、快速、高效、易于维护等优势,成为了众多企业和开发者的首选。在阿里云短信服务中,完整的调用过程包括:获取AK和SK、初始化客户端、设置...
    99+
    2023-05-21
    PHP 发送短信 阿里云短信接口
  • PHP调用鼎信通短信接口实现短信发送
    近年来,随着移动互联网的发展,短信成为了人们交流的一种重要工具。而如何实现短信的快速发送,对于企业来说则尤为重要。本文将介绍如何使用PHP语言调用鼎信通短信接口实现短信的自动发送。一、注册鼎信通账户并获取API接口密钥在使用鼎信通短信接口之...
    99+
    2023-05-21
    PHP 短信发送 鼎信通短信接口
  • PHP调用企信通短信接口实现短信发送
    企信通是目前国内最大的企业级短信服务提供商之一,其短信接口简单易用,为广大企业用户所喜爱。本文将介绍如何使用PHP调用企信通短信接口实现短信发送。一、申请企业短信接口账号首先,我们需要在企信通官网上申请企业短信接口账号。根据官网提示填写相关...
    99+
    2023-05-22
    PHP 短信发送 企信通
  • Java实现短信发送
    首先,我们要实现Java短信发送功能需要去申请第三方短信接口,以阿里云为例 点击跳转 在API市场中找到短信验证码接口: 我们可以先选择免费试用来测试: 点击立即购买后可前往控制台查看: OK...
    99+
    2023-09-07
    java 开发语言
  • PHP调用腾讯云短信接口实现发送短信
    PHP调用腾讯云短信接口实现发送短信随着移动互联网的发展,短信成为了日常生活中必不可少的交流工具,而短信营销、验证码等应用也越来越普遍。腾讯云短信平台提供了一种便捷、安全、高效的短信服务,而PHP调用腾讯云短信接口实现发送短信也变得越来越简...
    99+
    2023-05-21
    PHP 腾讯云短信接口 发送短信
  • PHP调用网易短信接口实现批量短信发送
    随着移动互联网的快速发展,短信营销成为越来越多企业所青睐的一种营销手段。而要想进行短信营销,首先需要解决的就是如何实现批量短信发送。本文将介绍如何使用PHP调用网易短信接口实现批量短信发送。申请网易短信接口首先需要申请网易短信接口,申请地址...
    99+
    2023-05-22
    PHP 批量短信发送 网易短信接口
  • PHP调用互亿无线短信接口实现短信发送
    互亿无线作为国内最具影响力的短信服务供应商之一,其提供的短信接口能够轻松实现短信发送,而且支持各种编程语言,包括PHP。下面将详细介绍如何使用PHP调用互亿无线短信接口实现短信发送。注册互亿无线账号并申请短信接口在使用互亿无线短信服务之前,...
    99+
    2023-05-23
    PHP 短信发送 互亿无线
  • PHP调用美联软通短信接口实现短信发送
    随着人们生活水平的提高和科技的发展,短信已成为人们交流的主要方式之一,越来越多的企业开始通过短信平台来实现营销、提醒等功能。在这个过程中,短信接口的选择显得尤为重要。本文将介绍如何通过PHP调用美联软通短信接口实现短信发送。一、美联软通短信...
    99+
    2023-05-21
    PHP 调用 短信发送
  • php如何发送短信
    今天小编给大家分享一下php如何发送短信的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。发送方法:1、实名认证并开通短信API...
    99+
    2023-07-04
  • PHP调用聚合数据短信接口实现短信发送
    在现代化的互联网时代中,短信已成为人们生活中不可或缺的一部分,尤其是在移动互联网时代,短信的使用率日益提高。而短信接口的使用,更是成为各大企业和开发者必备的一环。那么,在使用PHP语言进行短信发送时,如何调用聚合数据短信接口呢?本篇文章将通...
    99+
    2023-05-21
    PHP 短信发送 聚合数据短信接口
  • PHP调用融云短信接口实现批量短信发送
    随着移动互联网时代的到来,短信已成为手机日常使用的重要方式之一。对于企业而言,短信发送是推广营销、客户维护和服务提醒的好方法,因此使用短信接口进行批量短信发送也成为常见的需求。融云是国内知名的即时通讯云服务提供商,提供了多种短信服务接口。本...
    99+
    2023-05-22
    PHP 批量短信发送 融云短信接口
  • javascript如何实现发送短信验证码
    这篇文章主要介绍“javascript如何实现发送短信验证码”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“javascript如何实现发送短信验证码”文章能帮助大家解决问题。效果如下:代码思路:按钮...
    99+
    2023-07-02
  • PHP调用云之讯短信接口实现批量短信发送
    在现代社会,短信的应用越来越广泛,不仅仅用于个人之间的通讯,也被各行各业用于相关业务的通知、提醒等。如何实现批量短信发送成为很多企业、组织和个人必须面对的问题。而PHP调用云之讯短信接口则成为一种利用云端技术实现高效批量短信发送的方式。云之...
    99+
    2023-05-22
    PHP编程 短信发送 云之讯接口
  • PHP调用容联云通讯短信接口实现短信发送
    随着移动互联网的飞速发展,短信成为了人们生活中必不可少的一部分。无论是企业营销、快递通知、验证码验证,都需要用到短信功能。而容联云通讯短信接口作为一种有效的短信解决方案,被越来越多的企业所采用。本文将介绍如何使用PHP调用容联云通讯短信接口...
    99+
    2023-05-21
    PHP 短信发送 容联云通讯
  • SpringBoot如何实现MQTT消息发送和接收
    今天小编给大家分享一下SpringBoot如何实现MQTT消息发送和接收的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Spr...
    99+
    2023-07-05
  • PHP调用云片网短信接口实现批量短信发送
    随着移动互联网的发展,短信营销成为企业在互联网时代中推广的有效方式之一,但是短信的发送量惊人,如何实现短信的批量发送成为了一项技术难题,本文将对如何使用PHP调用云片网短信接口实现批量短信发送进行详细讲解。一、云片网短信接口介绍1、云片网简...
    99+
    2023-05-23
    PHP 短信接口 云片网
  • Java怎么实现短信发送
    本篇内容主要讲解“Java怎么实现短信发送”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java怎么实现短信发送”吧!1. 引入相关maven依赖<dependency><gr...
    99+
    2023-06-22
  • SpringBoot怎么实现短信发送
    这篇“SpringBoot怎么实现短信发送”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot怎么实现短信发送...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作