当前位置: 移动技术网 > IT编程>移动开发>Android > Android创建简单发送和接收短信应用

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

西安上门按摩,惊变20年,02看看看

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

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网