
上图为代码结构图。
现在我们看下具体的代码。
Send.java
main.xml
AndroidManifest.xml
最终效果图为:

和打电话小程序一样,这里也需要开启两个AVD才能进行功能测试。
----------------------------------------------------------------------------------------
废话连篇:
发短信应用的主要的类就是SmsManager。 在 Android 2.0 以前 应该使用 android.telephony.gsm.SmsManager
之后应该用 android.telephony.SmsManager;
SmsManager smsManager = SmsManager.getDefault();意思为获取系统默认的信息管理器
---------------------------------------------------------------------------------------
smsManager.sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent)
-- destinationAddress:目标电话号码 -- deliveryIntent: 发送 -->中国移动 --> 中国移动发送成功 --> 返回对方是否收到这个信息 --> 后续处理 即:这个意图包装了短信是否被对方收到的状态信息(供应商已经发送成功,但是对方没有收到)。 -------------------------------------------------------------------------------------- public static PendingIntent getBroadcast (Context context, int requestCode, Intent intent, int flags) ------------------------------------------------------------------------------ 此外,我们还要在AndroidManifest.xml中声明短信发送权限。 <uses-permission android:name="android.permission.SEND_SMS"/> -------------------------------------------------------------------------------
-- scAddress:服务商的短信中心号码(例如中国移动的短信中心号码),测试可以不填。
-- text: 短信内容
-- sentIntent:发送 -->中国移动 --> 中国移动发送失败 --> 返回发送成功或失败信号 --> 后续处理 即,这个意图包装了短信发送状态的信息
返回一个用于广播的PendingIntent,类似于调用Context.sendBroadcast()函数
requestCode 暂时不用
intent 是用于广播的intent
flag 有:FLAG_ONE_SHOT, FLAG_NO_CREATE, FLAG_CANCEL_CURRENT, FLAG_UPDATE_CURRENT 用于设置新建的PendingIntent是使用一次、如无则不创建、取消当前、更新当前等属性。
有的时候,我们两个AVD进行模拟发短信时,会发现有时候该程序无法正常使用。系统会提示我们NO DNS servers found,找不到DNS服务。这种情况一般是由于你的电脑没有联入网络的原因造成的。
本文介绍了一个简单的Android短信发送应用,主要使用SmsManager类来发送短信。通过EditText获取电话号码和短信内容,点击按钮触发发送。在AndroidManifest.xml中需声明SEND_SMS权限。代码中还包含如何创建和使用PendingIntent来跟踪短信的发送状态。
1888

被折叠的 条评论
为什么被折叠?



