Android创建简单发送和接收短信应用

所属分类: 软件编程 / Android 阅读数: 1834
收藏 0 赞 0 分享

本文实例为大家分享了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();
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助。

更多精彩内容其他人还在看

Retrofit2日志拦截器的使用

这篇文章主要介绍了Retrofit2日志拦截器的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android创建外部lib库及自定义View的图文教程

这篇文章主要给大家介绍了关于Android创建外部lib库及自定义View的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android分享微信小程序失败的一些事小结

这篇文章主要给大家介绍了关于Android分享微信小程序失败一些事,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android分享微信小程序技巧之图片优化

这篇文章主要给大家介绍了关于Android分享微信小程序技巧之图片优化的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android Viewpager实现无限循环轮播图

这篇文章主要为大家详细介绍了Android Viewpager实现无限循环轮播图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android中的Bitmap序列化失败的解决方法

这篇文章主要介绍了Android中的Bitmap序列化失败的解决方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Android自定义通用标题栏CustomTitleBar

这篇文章主要为大家详细介绍了Android自定义通用标题栏CustomTitleBar,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android组合控件自定义标题栏

这篇文章主要为大家详细介绍了Android组合控件自定义标题栏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android自定义复合控件实现通用标题栏

这篇文章主要为大家详细介绍了Android自定义复合控件实现通用标题栏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

ExpandableListView实现简单二级列表

这篇文章主要为大家详细介绍了ExpandableListView实现简单二级列表,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多