Android(OPhone) 学习笔记 - 短信发送

手机发展到2G阶段,出现了短信功能,现在已经成为除了通话业务之外最大的通信业务。本文我们通过一个例子来实现短信文本的发送功能。


一、关于模拟器

由于我们用模拟器进行实验,不能接收实际的呼叫和短信。但是模拟器的功能还是很强大滴……

在模拟器运行时,窗口左上角有当前模拟器的ID,如:5554

这个id可以被理解成手机号码,我们可以用这个号码来测试自带的通话和短信功能。另外在后台还可以使用命令行来实现短信发送和呼叫。手机号码为:15555218135。

1.运行 cmd
2.连接: telnet localhost 5554
3.通话命令:gsm call 15555218135

4.短信命令:sms send 15555218135 Hello,this is a Message.


二、界面设计

绘制如下界面:

Android(OPhone) 学习笔记 - 短信发送


三、代码编写

为了实现通信功能,我们需要引入代码包:import android.telephony.gsm.SmsManager;

在按钮的响应中添加:

Android(OPhone) 学习笔记 - 短信发送


1.在这个程序中,我们用到了sendTextMessage函数,从sdk中查到:

public void sendTextMessage (String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)

destinationAddress 收件人地址
scAddress 短信中心号码,空为默认中心号码
sentIntent 当消息发出时,成功或者失败的信息报告通过PendingIntent来广播。如果该参数为空,则发信程序会被所有位置程序检查一遍,这样会导致发送时间延长。
deliveryIntent 当消息发送到收件人时,该PendingIntent会被广播。pdu数据在状态报告的extended data ("pdu")中。
抛出 IllegalArgumentException 如果收件人或者信息为空。


2.

public static PendingIntent getBroadcast (Context context, int requestCode, Intent intent, int flags)

返回一个用于广播的PendingIntent,类似于调用Context.sendBroadcast()函数

requestCode 暂时不用

intent 是用于广播的intent

flag 有:FLAG_ONE_SHOT, FLAG_NO_CREATE, FLAG_CANCEL_CURRENT, FLAG_UPDATE_CURRENT 用于设置新建的PendingIntent是使用一次、如无则不创建、取消当前、更新当前等属性。


四、运行结果

运行两个模拟器,启动时间比较慢。

输入其中一个的ID如5556,和文本消息abc。点击发送后,在另外一个模拟器中出现发送的消息。

Android(OPhone) 学习笔记 - 短信发送


Android(OPhone) 学习笔记 - 短信发送

你可能感兴趣的:(android,OPhone)