Android开发:详解短信发送及广播监听小程序
141 浏览量
更新于2024-09-01
收藏 119KB PDF 举报
"本文主要探讨了在Android应用开发中如何创建一个简单的短信发送小程序,并提供了一个带有广播接收者监听功能的增强版示例,适用于学习Android短信功能开发的开发者参考。"
在Android平台上,实现短信发送功能是常见的需求,这通常涉及到与系统自带的SMS服务进行交互。以下将详细讲解如何在Android应用中实现这一功能:
首先,我们需要创建一个Activity,这个Activity将包含用户界面元素,如输入电话号码和短信内容的EditText以及发送按钮。例如,在提供的代码中,`Send.java` 类继承自 `Activity`,并包含了对布局文件 `main.xml` 的引用,其中定义了UI组件。
```java
public class Send extends Activity {
private String message;
private String number;
private EditText editText;
private EditText editText2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 初始化EditText和Button
editText = (EditText) findViewById(R.id.number);
editText2 = (EditText) findViewById(R.id.message);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// 在这里处理点击事件,获取输入并发送短信
}
});
}
}
```
当用户点击发送按钮时,会触发按钮的点击事件。在该事件中,我们需要获取EditText中的电话号码和短信内容,然后调用 `SmsManager` 类的静态方法来发送短信。`SmsManager` 是Android SDK提供的用于管理短信服务的类。
```java
public void onClick(View v) {
number = editText.getText().toString();
message = editText2.getText().toString();
if (validateInputs()) { // 验证输入合法性
sendSMS(number, message);
} else {
Toast.makeText(this, "请输入有效的电话号码和短信内容", Toast.LENGTH_SHORT).show();
}
}
private boolean validateInputs() {
// 验证号码和消息是否为空
return !number.isEmpty() && !message.isEmpty();
}
private void sendSMS(String number, String message) {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(number, null, message, getSentIntent(), getDeliveredIntent());
}
```
`sendTextMessage()` 方法用于发送短信,它接受四个参数:接收方电话号码、发送方的回执地址(通常为null)、短信内容、发送成功的PendingIntent和送达成功的PendingIntent。`getSentIntent()` 和 `getDeliveredIntent()` 分别用于设置短信发送成功和送达成功的回调。
为了监听短信的发送状态,我们可以创建BroadcastReceiver,这在示例中被称为“升级版”的短信发送功能。广播接收者可以在短信发送成功或失败时接收到系统广播,并做出相应处理,例如显示通知或者提示用户。
```java
private PendingIntent getSentIntent() {
Intent sentIntent = new Intent("SMS_SENT");
return PendingIntent.getBroadcast(this, 0, sentIntent, PendingIntent.FLAG_UPDATE_CURRENT);
}
private PendingIntent getDeliveredIntent() {
Intent deliveredIntent = new Intent("SMS_DELIVERED");
return PendingIntent.getBroadcast(this, 0, deliveredIntent, PendingIntent.FLAG_UPDATE_CURRENT);
}
// 注册BroadcastReceiver
@Override
protected void onResume() {
super.onResume();
registerReceiver(sentReceiver, new IntentFilter("SMS_SENT"));
registerReceiver(deliveredReceiver, new IntentFilter("SMS_DELIVERED"));
}
// 反注册BroadcastReceiver
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(sentReceiver);
unregisterReceiver(deliveredReceiver);
}
// BroadcastReceiver实例
private BroadcastReceiver sentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
switch (getResultCode()) {
case Activity.RESULT_OK:
Toast.makeText(context, "短信已发送", Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(context, "发送失败:通用错误", Toast.LENGTH_SHORT).show();
break;
// 其他错误情况...
}
}
};
private BroadcastReceiver deliveredReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
switch (getResultCode()) {
case Activity.RESULT_OK:
Toast.makeText(context, "短信已送达", Toast.LENGTH_SHORT).show();
break;
// 其他错误情况...
}
}
};
```
以上就是Android开发中实现发送短信的基本步骤,包括用户界面的创建、短信的发送以及状态监听。需要注意的是,从Android 6.0(API级别23)开始,发送短信可能需要动态请求`SEND_SMS`权限,所以在运行时需要判断并请求此权限。同时,为了遵守Google Play的政策,确保用户知道应用会发送短信,最好在应用中添加适当的用户提示。
2012-02-10 上传
2012-11-03 上传
2013-10-14 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
2022-03-14 上传
609 浏览量
164 浏览量
weixin_38654220
- 粉丝: 10
- 资源: 931
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍