本文实例为大家分享了Android创建发送和接收短信应用的简单实现过程,供大家参考,具体内容如下 一、接收短信 项目的结构如下:一个简单的接收和发送短信的功能 1、定义一个接
本文实例为大家分享了Android创建发送和接收短信应用的简单实现过程,供大家参考,具体内容如下
一、接收短信
项目的结构如下:一个简单的接收和发送短信的功能
1、定义一个接收短信的广播:当手机接收到一条短信的时候,系统会发出一条值为android.provider.Telephony.SMS_RECEIVED 的广播,这条广播里携带着与短信相关的所有数据。
// 接收短信的广播
class MessageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
Object[] pdus = (Object[]) bundle.get("pdus"); // 提取短信消息
SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < messages.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
String address = messages[0].getOriginatingAddress(); // 获取发送方号码
String fullMessage = "";
for (SmsMessage message : messages) {
fullMessage += message.getMessageBody(); // 获取短信内容
}
textView.setText("address; " + address + ", message: " + fullMessage);
abortBroadcast();
}
}
2、 注册广播,这里我们动态在代码中注册:
// 注册接收广播
IntentFilter intentFilter1 = new IntentFilter();
intentFilter1.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
intentFilter1.addAction("android.provider.Telephony.SMS_RECEIVED");
messageReceiver = new MessageReceiver();
reGISterReceiver(messageReceiver, intentFilter1);
3、 声明权限:
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
二、发送短信
1、 发送短信:用getDefault方法得到SmsManager对象,调用sendTextMessage方法发送短信
// 发送短信
public void send(View view) {
SmsManager smsManager = SmsManager.getDefault();
String destinationAddress = "15527100207";
String text = "我爱你!";
Intent intent1 = new Intent(SENT_SMS_ACTION);
PendingIntent sentIntent = PendingIntent.getBroadcast(this, 0, intent1, 0);
Intent intent2 = new Intent(DELIVERY_SMS_ACTION);
PendingIntent deliveryIntent = PendingIntent.getBroadcast(this, 0, intent2, 0);
smsManager.sendTextMessage(destinationAddress, null, text, sentIntent, deliveryIntent); // aidl服务,进程间的通信
}
我们具体了解一下sendTextMessage方法一个参数的含义:
public void sendTextMessage(String destinationAddress, String scAddress, String text,PendingIntent sentIntent, PendingIntent deliveryIntent)
destinationAddress: // 目的地,也就是对方的手机号
scAddress: // 服务中心地址,为空的话就是默认的SMSC
text: // 发送消息的具体内容
sentIntent: // 当消息成功或者失败发送时,就发起这个广播
deliveryIntent: // 当消息到达目的地时,就发起这个广播
2、 sentIntent的广播:
// 发送短信的状态广播
class MessageBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 一个10位数的号码发送,也能成功,但是对方没有接收短信。
if (getResultCode() == RESULT_OK) {
Toast.makeText(MainActivity.this, "发送成功!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "发送失败!", Toast.LENGTH_SHORT).show();
}
}
}
3、 deliveryIntent的广播:
// 当消息被传递给收件人时
class DeliveryBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(MainActivity.this, "对方接收短信成功!", Toast.LENGTH_SHORT).show();
}
}
您可能感兴趣的文章:Android Mms之:短信发送流程(图文详解)Android发送短信功能代码android中可以通过两种方式调用接口发送短信Android实现将已发送的短信写入短信数据库的方法Android实现发送短信功能实例详解Android实现短信加密功能(发送加密短信、解密本地短信)Android短信发送器实现方法Android实现短信发送功能Android编程实现读取手机联系人、拨号、发送短信及长按菜单操作方法实例小结Android Intent的几种用法详细解析android中intent传递list或者对象的方法Android系列之Intent传递对象的几种实例方法Android使用Intent发送短信的实现方法
--结束END--
本文标题: Android创建简单发送和接收短信应用
本文链接: https://lsjlt.com/news/25145.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0