android app 短信接收,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、 声明权限:
二、发送短信
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创建简单发送和接收短信应用相关推荐
- android app自动锁屏,Android开机自动启动app 不锁屏
Android开机自动启动app 不锁屏 发布时间:2020-07-17 03:22:20 来源:51CTO 阅读:2086 作者:清水禅石 主要参考:http://life173.blog.51ct ...
- 手把手教你Android手机与BLE终端通信--连接,发送和接收数据
假设你还没有看上一篇 手把手教你Android手机与BLE终端通信--搜索,你就先看看吧,由于这一篇要接着讲搜索到蓝牙后的连接.和连接后的发送和接收数据. 评论里有非常多人问假设一条信息特别长,怎么不 ...
- android app unlock sim pin,android Sim卡锁定 pin解锁流程学习
1.Android自帶的pin解鎖部份在framework/base/policy/src/com/android/internal/policy/impl/SimUnlockScreen.java ...
- android app连接打印机程序,Android App新增打印机支持 手机打印就是爽
初次看到这个东西,可能会误人为是移动硬盘或某人的午餐盒,但实际上,这是一台PoGo3*4打印机,既然是打印机那就是用来打印的喽,可是连接线在什么地方?这玩意到底怎么用,谁来教教我? 其实很简单,一台P ...
- Android 短信模块分析(五) MMS之彩信的发送与接收
一. 彩信发送: 彩信比短信麻烦很多.从sendMmsWorker函数的参数就可以看出来:(conv, mmsUri, persister, slideshow, sendReq) 上下文,uri,P ...
- android app英文 英文模式,Android APP 中英文切换
实习期间,师父要求做app的中英文切换,就顺便记录了下. 一.AndroidManifest.xml文件(清单文件) 在每个要切换语言的Activity下面添加: android:configChan ...
- 中国网建SMS短信接口调用(java发送和接收手机短信)
引言 最近有点想写博客的冲动,不为别的,只为能为那些和我一样碰到困难的码农们尽一份绵薄之力,分享技术和心得,探讨疑点,共同学习,共同进步.但提笔时又不知从何作起,java这门语言犹如一部浩瀚的生活字典 ...
- android+注销功能,Android app注销账号和完全退出简单实现
写这篇文章的目的主要是用来记录一下这块的知识,同时也能够帮助对这块不太熟悉的朋友. app账号的注销以及完全退出销毁整个app可以说是开发app必备的功能,虽然知识不是很深但是对一些接触an ...
- android 启动页 简书,一、Android App启动图启动界面的简单实现
1.activity实现 创建一个Splash activity public class Splash extends AppCompatActivity { @Override protected ...
最新文章
- 前端Vue学习之路(一)-初识Vue
- LeetCode实战:环形链表 II
- android 线程信号量,iOS开发 多线程的高级应用-信号量semaphore
- 合并排序的非递归实现(自底向上设计)
- 博士申请 | 澳大利亚悉尼科技大学招收人工智能/软件工程方向全奖博士生
- STL学习笔记(数值算法)
- python朋友圈动态_如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)
- 头信息_如何在 Spring REST Controller 中获取 HTTP 头信息
- oracle新建一个用户_Kettle 连接oracle将数据保存到Excel
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)...
- 三菱PLC学习方法分享
- 红宝书(javascirpt高级程序设计)学习笔记(一)
- 免费使用微软Azure进行文字转语音的三种方法!最自然接近人声的机器配音技术。
- 04zookeeper场景应用-master选举
- 什么是域名系统或 DNS?
- HDU 1814 Two_Sat
- 畅想小组KTV点歌系统简介
- 与前端新人一起学魔法 Day02 HTML基础(二)
- 分享一个非常厉害的md5 解密网站
- python matplotlib绘制 3D图像专题 (三维柱状图、曲面图、散点图、曲线图合集)