android基础---->发送和接收短信
收发短信应该是每个手机最基本的功能之一了,即使是许多年前的老手机也都会具备这项功能,而Android 作为出色的智能手机操作系统,自然也少不了在这方面的支持。今天我们开始自己创建一个简单的发送和接收短信的应用。
目录导航
接收短信
项目的结构如下:一个简单的接收和发送短信的功能
aaarticlea/png;base64,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" alt="" />
一、定义一个接收短信的广播:当手机接收到一条短信的时候,系统会发出一条值为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();
}
}
二、 注册广播,这里我们动态在代码中注册:
// 注册接收广播
IntentFilter intentFilter1 = new IntentFilter();
intentFilter1.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
intentFilter1.addAction("android.provider.Telephony.SMS_RECEIVED");
messageReceiver = new MessageReceiver();
registerReceiver(messageReceiver, intentFilter1);
三、 声明权限:
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
发送短信
一、 发送短信:用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: // 当消息到达目的地时,就发起这个广播
三、 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();
}
}
}
四、 deliveryIntent的广播:
// 当消息被传递给收件人时
class DeliveryBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(MainActivity.this, "对方接收短信成功!", Toast.LENGTH_SHORT).show();
}
}
友情链接
android基础---->发送和接收短信的更多相关文章
- android基础知识点复习之短信发送
界面布局: activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/an ...
- android学习十四(android的接收短信)
收发短信是每一个手机主要的操作,android手机当然也能够接收短信了. android系统提供了一系列的API,使得我们能够在自己的应用程序里接收和发送短信. 事实上接收短信主要是利用我们前面学过的 ...
- Android使用BroadCastRecevier广播实现接收短信,并利用Toast弹出显示内容
在上一篇文章 Android简单实现BroadCastReceiver广播机制 中简单的实现了一个广播机制,这里利用BroadCarstRecevier实现一个接收短信并显示内容的案例,当然至于接收到 ...
- android接收短信——framework处理流程(android 5.1)
modem层不懂,所以直接从RIL.java开始.以电信卡接收短信为例 modem通知RIL.java中的 RILReceiver处理接收信息 class RILReceiver implements ...
- Android接收短信
Android收到短信时会广播android.provider.Telephony.SMS_RECEIVED消息,因此只要定义一个Receiver,收听该消息,就能接收短信. <receiver ...
- Android 接收短信
启动程序时启动一个service,在service里注册接收短信的广播,当手机收到短信里,打印出短信内容跟电话号码. package com.lmy.SmsListener; import andro ...
- .NET 微信开放平台接口(接收短信、发送短信)
.NET 微信开放平台接口(接收短信.发送短信) 前两天做个项目用到了微信api功能.项目完成后经过整理封装如下微信操作类. 以下功能的实现需要开发者已有微信的公众平台账号,并且开发模式已开启.接口配 ...
- Android studio之广播监听接收短信
一. 在清单文件中(AndroidManifest.xml)添加短信权限 这里我用的android studio版本是3.3的 <uses-permission android:name=&qu ...
- Android实例-打电话、发短信和邮件,取得手机IMEI号(XE8+小米2)
结果: 1.不提示发短信卡住,点击没有反映,我猜想,可能是因为我用的是小米手机吧. 2.接收短信报错,我猜想可能是我改了里面的方法吧(哪位大神了解,求指教). 3.project -->opti ...
随机推荐
- [uart]理解线路规程的作用
转自:http://biancheng.dnbcw.info/linux/336240.html Linux OS的设备驱动有相当经典的抽象思想以及分层思想.与通信世界里面的思想相一致. 一.在Lin ...
- salt '*' state.highstate 报错找不到文件,环境如下No Top file or master_tops data matches found.
salt '*' state.highstate 报错找不到文件,环境如下No Top file or master_tops data matches found. file_roots: b ...
- WPF教程四:布局之DockPanel面板
DockPanel:停靠面板 DockPanel定义一个区域,在此区域中,您可以使子元素通过描点的形式排列,这些对象位于 Children 属性中.停靠面板类似于WinForm中控件的Dock属性.D ...
- 接口(interface)那点事
1.接口(interface),在 java中有这个类型哦,这是语法哦. public interface MyInterface { } 语法还是很清晰的哦, 类的关键字是class.而接口改为in ...
- 上手并过渡到PHP7(5)——轻量级“集合”迭代器-Generator
轻量级“集合”迭代器-Generator泊学视频链接泊阅文档链接Generator是PHP 5.5加入的新语言特性.但是,它似乎并没有被很多PHP开发者广泛采用.因此,在我们了解PHP 7对Gener ...
- JPA联合主键
联合主键也就是说需要多个字段才能确定数据库记录中的唯一一行.这样就需要多个字段一起,组成主键,也叫联合主键.例如飞机航线,我们需要知道飞机起飞的地点以及飞机降落的地点.所以需要飞机起飞的地点和降落的地 ...
- 关于在Andoird集成开发软件中添加外部jar包的方法
步骤必须是下面的两步,少一步都不行. 第一步是存放于项目中,第二步是导入和应用于项目中. 1.右键项目-Build Path-Configure Build Path-在Libraries目录下-点右 ...
- 问题解决-某些项目因位于工作空间目录中而被隐藏 & 如何解决java项目导入出错:与另一项目重叠
有时候我们导入现有的工程时会出现错误,没有继续下一步的那个按钮,错误提示如下:some projects were hidden because they exist in the workspace ...
- Java设计模式(三) Visitor(訪问者)模式及多分派场景应用
基本概念 Visitor 封装一些作用于数据结构中的各元素的操作,不同的操作能够借助新的visitor实现.减少了操作间的耦合性 訪问者能够将数据结构和对数据的操作解耦,使得添加对数据结构的操作不须要 ...
- 转载:【原译】Erlang常见注意事项(Efficiency Guide)
转自:http://www.cnblogs.com/futuredo/archive/2012/10/17/2726416.html Common Caveats(常见注意事项) Erlang/OTP ...