Android创建简单发送和接收短信应用
程序员文章站
2024-02-28 17:18:52
本文实例为大家分享了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(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助。
上一篇: Python判断变量是否为Json格式的字符串示例
下一篇: 浅谈EventBus