本文实例为大家分享了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、 声明权限:

二、发送短信

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();

}

}

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

android app 短信接收,Android创建简单发送和接收短信应用相关推荐

  1. android app自动锁屏,Android开机自动启动app 不锁屏

    Android开机自动启动app 不锁屏 发布时间:2020-07-17 03:22:20 来源:51CTO 阅读:2086 作者:清水禅石 主要参考:http://life173.blog.51ct ...

  2. 手把手教你Android手机与BLE终端通信--连接,发送和接收数据

    假设你还没有看上一篇 手把手教你Android手机与BLE终端通信--搜索,你就先看看吧,由于这一篇要接着讲搜索到蓝牙后的连接.和连接后的发送和接收数据. 评论里有非常多人问假设一条信息特别长,怎么不 ...

  3. android app unlock sim pin,android Sim卡锁定 pin解锁流程学习

    1.Android自帶的pin解鎖部份在framework/base/policy/src/com/android/internal/policy/impl/SimUnlockScreen.java ...

  4. android app连接打印机程序,Android App新增打印机支持 手机打印就是爽

    初次看到这个东西,可能会误人为是移动硬盘或某人的午餐盒,但实际上,这是一台PoGo3*4打印机,既然是打印机那就是用来打印的喽,可是连接线在什么地方?这玩意到底怎么用,谁来教教我? 其实很简单,一台P ...

  5. Android 短信模块分析(五) MMS之彩信的发送与接收

    一. 彩信发送: 彩信比短信麻烦很多.从sendMmsWorker函数的参数就可以看出来:(conv, mmsUri, persister, slideshow, sendReq) 上下文,uri,P ...

  6. android app英文 英文模式,Android APP 中英文切换

    实习期间,师父要求做app的中英文切换,就顺便记录了下. 一.AndroidManifest.xml文件(清单文件) 在每个要切换语言的Activity下面添加: android:configChan ...

  7. 中国网建SMS短信接口调用(java发送和接收手机短信)

    引言 最近有点想写博客的冲动,不为别的,只为能为那些和我一样碰到困难的码农们尽一份绵薄之力,分享技术和心得,探讨疑点,共同学习,共同进步.但提笔时又不知从何作起,java这门语言犹如一部浩瀚的生活字典 ...

  8. android+注销功能,Android app注销账号和完全退出简单实现

    写这篇文章的目的主要是用来记录一下这块的知识,同时也能够帮助对这块不太熟悉的朋友.      app账号的注销以及完全退出销毁整个app可以说是开发app必备的功能,虽然知识不是很深但是对一些接触an ...

  9. android 启动页 简书,一、Android App启动图启动界面的简单实现

    1.activity实现 创建一个Splash activity public class Splash extends AppCompatActivity { @Override protected ...

最新文章

  1. 前端Vue学习之路(一)-初识Vue
  2. LeetCode实战:环形链表 II
  3. android 线程信号量,iOS开发 多线程的高级应用-信号量semaphore
  4. 合并排序的非递归实现(自底向上设计)
  5. 博士申请 | 澳大利亚悉尼科技大学招收人工智能/软件工程方向全奖博士生
  6. STL学习笔记(数值算法)
  7. python朋友圈动态_如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)
  8. 头信息_如何在 Spring REST Controller 中获取 HTTP 头信息
  9. oracle新建一个用户_Kettle 连接oracle将数据保存到Excel
  10. 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)...
  11. 三菱PLC学习方法分享
  12. 红宝书(javascirpt高级程序设计)学习笔记(一)
  13. 免费使用微软Azure进行文字转语音的三种方法!最自然接近人声的机器配音技术。
  14. 04zookeeper场景应用-master选举
  15. 什么是域名系统或 DNS?
  16. HDU 1814 Two_Sat
  17. 畅想小组KTV点歌系统简介
  18. 与前端新人一起学魔法 Day02 HTML基础(二)
  19. 分享一个非常厉害的md5 解密网站
  20. python matplotlib绘制 3D图像专题 (三维柱状图、曲面图、散点图、曲线图合集)

热门文章

  1. mysql汉字按英文字母排序
  2. 团队作业——Alpha冲刺 8/12
  3. idempotent - 幂等
  4. 莫国防病毒(win32.mgf)源代码
  5. 逍遥安卓模拟器卡android,逍遥安卓模拟器怎么设置不卡 逍遥模拟器不流畅解决方法...
  6. c语言————开辟动态内存空间
  7. MT4外汇结余净值可用预付款
  8. Java:使用Java调用打印机进行打印(JPG、PDF和Word三种文件格式)
  9. QT 主线程子线程互相传值
  10. Alpha 冲刺(6/10)