Android短信功能实现:发送与接收指南

5星 · 超过95%的资源 需积分: 10 19 下载量 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发送和接收短信的基本实现步骤。需要注意的是,为了用户体验和隐私考虑,实际应用中还需要处理发送失败的情况,并在接收短信时判断是否是预期的短信,避免不必要的干扰。