Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 456|回复: 0

开发交流:Android SMS短信服务相关概念简述

[复制链接]

该用户从未签到

发表于 2011-10-24 10:35:18 | 显示全部楼层 |阅读模式
经常关注我们51CTO技术文章的朋友们应该会记得我们为大家介绍的一篇关于Android短信发送功能实现的文章。大家可以通过它具体了解其中短信功能的应用。那么今天,大家可以从这里学到的有关Android SMS短信服务的一些基本知识。

许多新的应用程序会考虑使用SMS作为数据分发平台。现实一点的场景:电影点播系统要求用户发送一定格式的短信来进行自动点播。现在越来越多的应用采用SMS作为与用户进行数据交换的方式。现在让我们来看一下我们如何在Android平台上来构造这种形式的应用。


Android API支持开发可以发送和接收SMS消息的应用程序。目前我们开发过程中使用的Android模拟器还不支持发送SMS,但它可以接收SMS。现在我们来探索一下Android对SMS的支持,我们将会构建一个小小的应用程序来监听移动设备(或模拟器)上接收到的SMS消息,并将它显示出来。


我们来定义一个Intent接收器来处理Android SMS短信服务接收事件:
package com.wissen.sms.receiver;   

/**   

* 该类将在SMS接收的时候被调用   

*/   

public class SMSReceiver extends BroadcastReceiver {   

@Override   

public void onReceive(Context context, Intent intent) {   

// TODO   

}   

}   

package com.wissen.sms.receiver;  

/**  

* 该类将在SMS接收的时候被调用  

*/  

public class SMSReceiver extends BroadcastReceiver {  

@Override  

public void onReceive(Context context, Intent intent) {  

// TODO  

}  

}
复制代码我们需要对这个Intent接收器进行配置以使它能获取Android SMS短信服务接收事件,‘ android.provider.Telephony.SMS_RECEIVED’这个事件状态表示了SMS已被接收。我们可以在AndroidManifest.xml中进行如下配置:
< receiver android:name=”.receiver.SMSReceiver”

android:enabled=”true”>   

< intent-filter>   

< action android:name=”android.provider.Telephony.

SMS_RECEIVED” />

< /intent-filter>   

< /receiver>   

< receiver android:name=”.receiver.SMSReceiver”

android:enabled=”true”>

< intent-filter>

< action android:name=”android.provider.Telephony.

SMS_RECEIVED” />

< /intent-filter>

< /receiver>
复制代码为了能让我们的应用能接收Android SMS短信服务,我们得先进行权限的指定,可以在AndroidManifest.xml中如下配置: < uses-permission android:name=”android.

permission.RECEIVE_SMS”>

< /uses-permission>   

< uses-permission android:name=”android.

permission.RECEIVE_SMS”>

< /uses-permission>
复制代码现在,我们的Intent接收器就可以在Android设备接收到SMS的时候被调用了,余下的事情就是去获取和显示接收到的SMS消息文本了: public void onReceive(Context context, Intent intent) {   

Bundle bundle = intent.getExtras();   

Object messages[] = (Object[]) bundle.get(”pdus”);   

SmsMessage smsMessage[] = new SmsMessage[messages.length];   

for (int n = 0; n < messages.length; n++) {   

smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);   

}   

// show first message   

Toast toast = Toast.makeText(context, “Received SMS: ” +

smsMessage[0].getMessageBody(), Toast.LENGTH_LONG);   

toast.show();   

}   

public void onReceive(Context context, Intent intent) {  

Bundle bundle = intent.getExtras();  

Object messages[] = (Object[]) bundle.get(”pdus”);  

SmsMessage smsMessage[] = new SmsMessage[messages.length];  

for (int n = 0; n < messages.length; n++) {  

smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);  

}  

// show first message  

Toast toast = Toast.makeText(context, “Received SMS: ” +

smsMessage[0].getMessageBody(), Toast.LENGTH_LONG);  

toast.show();  

}
复制代码
Android设备接收到的SMS是以pdu形式的(protocol description unit)。android.telephony.gsm.SmsMessage这个类可以储存SMS的相关信息,我们也可以从接收到的pdu中创建新的SmsMessage实例,Toast界面组件可以以系统通知的形式来显示接收到的SMS消息文本。
现在让我们来在模拟器中运行这个应用程序,以及发送Android SMS短信服务消息到这个模拟器上。我们可以在eclipse的Android插件所提供的DDMS视图(Dalvik Debug Monitor Service)中发送SMS消息到模拟器上(在’Emulator Control’面板中;另外需要指定电话电话号码,不过可以是任意的)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 05:38 , Processed in 0.372307 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表