Android短信功能实现:发送与接收指南
5星 · 超过95%的资源 需积分: 10 98 浏览量
更新于2024-09-21
收藏 83KB DOC 举报
"这篇文章主要介绍了如何在Android平台上实现发送和接收短信的功能,通过调用Android SDK提供的API,开发者可以轻松地构建这样的应用。"
在Android应用开发中,发送和接收短信是常见的需求,例如用于验证用户手机号或者进行通知。下面我们将详细讲解如何实现这两个功能。
1. 发送短信
发送短信的过程主要涉及`SmsManager`类的使用。首先,你需要在AndroidManifest.xml文件中添加以下权限:
```xml
<uses-permission android:name="android.permission.SEND_SMS" />
```
然后,在MainActivity中编写发送短信的代码:
```java
public void sendSMS(String phoneNumber, String message) {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNumber, null, message, null, null);
}
```
这里的`phoneNumber`是接收方的电话号码,`message`是短信内容。`sendTextMessage`方法会发送一条文本短信。
2. 接收短信
接收短信则需要用到BroadcastReceiver,创建一个名为`SmsReceiver`的类,继承自`BroadcastReceiver`:
```java
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Telephony.Sms.Intents.SMS_RECEIVED_ACTION)) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
for (Object pdu : pdus) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu);
String sender = smsMessage.getDisplayOriginatingAddress();
String body = smsMessage.getMessageBody();
Log.d("SmsReceiver", "Received SMS from " + sender + ": " + body);
// 在这里处理接收到的短信,比如显示在界面上或执行其他操作
}
}
}
}
}
```
注册BroadcastReceiver有两种方式:静态注册和动态注册。静态注册在AndroidManifest.xml中添加:
```xml
<receiver android:name=".SmsReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
```
动态注册则在代码中完成,通常在Activity的`onCreate`方法中:
```java
registerReceiver(new SmsReceiver(), new IntentFilter(Telephony.Sms.Intents.SMS_RECEIVED_ACTION));
```
别忘了在`onPause`或`onStop`时取消注册,以避免浪费系统资源。
3. 界面设计
界面设计方面,例子中的XML布局文件创建了一个简单的表单,包含两个EditText(一个用于输入电话号码,另一个用于输入短信内容),以及可能的发送按钮。按钮的点击事件应该触发发送短信的函数。
```xml
<!-- layout.xml -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/mobile_label" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txt_from"
android:hint="请输入电话号码" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/content_label" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txt_content"
android:hint="请输入短信内容" />
<!-- 添加发送按钮并设置点击事件 -->
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="发送短信"
android:onClick="sendMessage" />
</LinearLayout>
```
在MainActivity中,`sendMessage`方法应调用上面定义的`sendSMS`函数,传入EditText的值作为参数。
以上就是Android发送和接收短信的基本实现步骤。需要注意的是,为了用户体验和隐私考虑,实际应用中还需要处理发送失败的情况,并在接收短信时判断是否是预期的短信,避免不必要的干扰。
212 浏览量
138 浏览量
216 浏览量
408 浏览量
2020-09-02 上传
259 浏览量
Ruilin-z
- 粉丝: 11
- 资源: 9
最新资源
- 蓝桥杯算法辅导.zip
- szOA.Core.rar
- Polopromini.github.io
- 3155-Project:ITCS 3155的小组项目
- piano-lessons-with-greg-kaighin-website
- 自定义滚动条:使用自定义滚动条使Firefox具有个性化效果!
- lengtooyinxiang
- 使用langchain+千问72b+m3e-large+chroma的对话机器人源码python实现
- cqlsh_standalone:独立CQLSH可执行文件
- chapter9 codes_palel6y_撞击_hitormishit_
- algo-green-bond
- pdksh-5.2.14-36.el5.i386.rpm
- IN3170:2021年Spring在Corse IN3170上的文件
- TP_SIR_mongodb
- whois:智能的纯Ruby WHOIS客户端和解析器
- SoyHuCe-technical-test