在这篇文章中,我们将详细介绍如何为安卓设备编写一个简单的短信应用程序,以帮助您入门安卓开发。短信应用程序通常负责发送、接收和管理短信消息。这里我们将讨论的关键组件主要包括短信接收、存储以及发送。
1. 准备工作
首先,确保您已经安装了 Android Studio,这是一个针对 Android 平台的开发工具。下载并安装好 Android Studio 后,您可以开始创建一个新的 Android 项目。请选择 “Empty Activity” 作为您的项目模板。在创建过程中为您的项目取好名字,例如,“MySMSApp”。
2. 设计界面
在创建的项目中,我们需要设计两个主要界面,一个是消息列表,另一个是发送消息的界面。要设计消息列表,您可以在 `activity_main.xml` 文件中创建一个 RecyclerView 对象,用于展示发送和接收的短信。将"ConstraintLayout"替换为 "LinearLayout" 并添加 RecyclerView 对象:
```xml
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:padding="8dp" tools:listitem="@layout/sms_item" />
```
为了实现发送消息界面,我们需要一个 EditText(用于输入消息) 和一个 Button(用于触发发送操作)。将这些控件放入一个嵌套的 LinearLayout 中。
```xml
android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="8dp"> android:id="@+id/etMessage" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" android:hint="输入短信" />
```
3。权限及广播接收器
为了使我们的应用能够发送和接收短信,我们需要在`AndroidManifest.xml`文件中添加相应的权限和广播接收器。
```xml
android:name=".SMSReceiver" android:exported="true" android:permission="android.permission.BROADCAST_SMS">
```
接下来,我们创建一个名为`SMSReceiver.java`的新类。这个类将负责接收和处理短信消息。需要继承 "BroadcastReceiver" 并实现 "onReceive" 方法。
4. 发送短信
在MainActivity.java中,为发送按钮添加单击事件监听器,调用 SmsManager 类来完成短信发送。
```java
public class MainActivity extends AppCompatActivity {
private EditText etMessage;
private Button btnSend;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etMessage = findViewById(R.id.etMessage);
btnSend = findViewById(R.id.btnSend);
// 添加单击事件监听器
btnSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String phoneNumber = "1234567890"; //替换为您要发送的电话号码
String message = etMessage.getText().toString();
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNumber, null, message, null, null);
Toast.makeText(MainActivity.this, "短信已发送", Toast.LENGTH_SHORT).show();
}
});
}
}
```
5. 接收短信
在 SMSReceiver.java 中,将实现接收到短信时要执行的逻辑。解析接收到的短信内容并新增至消息列表。
```java
public class SMSReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
if (pdus != null) {
StringBuilder sb = new StringBuilder();
for (Object pdu : pdus) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu);
String body = smsMessage.getDisplayMessageBody();
sb.append(body);
}
// 将收到的短信添加到消息列表,并更新 RecyclerView。
}
}
}
}
```
创建一个适用于 RecyclerView 的自定义适配器,并在收到新消息时更新适配器。
6. 存储短信
对于存储短信,您可以选择将消息保存在 SQLite 数据库或者其他适合的存储方式,以便在重新启动应用时能够读取历史消息。
至此,我们已经完成了一个简单的安