欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2024-02-28 17:18:52
本文实例为大家分享了android创建发送和接收短信应用的简单实现过程,供大家参考,具体内容如下 一、接收短信 项目的结构如下:一个简单的接收和发送短信的功能 1...

本文实例为大家分享了android创建发送和接收短信应用的简单实现过程,供大家参考,具体内容如下

一、接收短信

项目的结构如下:一个简单的接收和发送短信的功能

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();
  }
}

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