Android开发监听指定号码发来的短信
2015-08-05 11:03
405 查看
项目中碰到的需要对固定端口发送过来的短信进行解析,并且根据短信的类容作出相应的行为。查了好久,网上也有大量的资料,但是感觉都不能满足自己的要求。最后把大家的方法都看了一下,最后糅合出适合自己的,可以实现对固定号码发过来的短息进行监听。
简单的说来就是写一个类继承自BroadCastReceiver,代码如下:
其中strDestAddress表示你需要监听的指定号码。
这样在有新信息过来的时候就可以监听到了,监听到指定号码发过来的信息后如果再想做其他的事就写在
最后,当然是不要忘了注册和添加权限。这里需要在mainfest.xml里面添加权限
上面代码中的smsReceiver就定义的一个SmsBroadCastReceiver类型变量。
到这里就实现了对指定号码发过来的短信进行监听,但是还是觉得有所不足,如果有其他更好的方法的,麻烦告诉我一下。
简单的说来就是写一个类继承自BroadCastReceiver,代码如下:
public class SmsBroadcastReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(SMS_RECEIVED)) { StringBuffer SmsAddress = new StringBuffer(); StringBuffer SmsContent = new StringBuffer(); Bundle bundle = intent.getExtras(); if (bundle != null) { Object[] pdusObjects = (Object[]) bundle.get("pdus"); SmsMessage[] messages = new SmsMessage[pdusObjects.length]; for (int i = 0; i < pdusObjects.length; i++) { messages[i] = SmsMessage.createFromPdu((byte[]) pdusObjects[i]); } for (SmsMessage message : messages) { SmsAddress.append(message.getDisplayOriginatingAddress()); SmsContent.append(message.getDisplayMessageBody()); if (SmsAddress.toString().equals(strDestAddress)) { } } } } } }我是直接写的一个内部类,所以有两个常亮是前面定义好了的,分别是:
private static String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
private String strDestAddress = "15555215556";
其中strDestAddress表示你需要监听的指定号码。
这样在有新信息过来的时候就可以监听到了,监听到指定号码发过来的信息后如果再想做其他的事就写在
if (SmsAddress.toString().equals(strDestAddress)) { }
最后,当然是不要忘了注册和添加权限。这里需要在mainfest.xml里面添加权限
<uses-permission android:name="android.permission.RECEIVE_SMS" />注册的可以选择静态注册,也可以选择动态注册,这里我选择的是动态注册,并且把这个广播和Activity的生命周期进行绑定了。代码如下:
@Override protected void onResume() { IntentFilter mFilter01; mFilter01 = new IntentFilter(SMS_RECEIVED); smsReceiver = new SMSBroadcastReceiver(); registerReceiver(smsReceiver, mFilter01); super.onResume(); } @Override protected void onPause() { /* 取消注册自定义Receiver */ unregisterReceiver(smsReceiver); super.onPause(); }
上面代码中的smsReceiver就定义的一个SmsBroadCastReceiver类型变量。
到这里就实现了对指定号码发过来的短信进行监听,但是还是觉得有所不足,如果有其他更好的方法的,麻烦告诉我一下。
相关文章推荐
- Android 谷歌 开源 通信框架 VOLLEY(三)——图片加载处理
- 获取Android设备唯一标识码
- ubuntu14.04下搭建Android编译环境
- Android SDK Content Loader 0% 解决方案
- Android Studio 快捷键整理
- 即时通讯 - 如何保证消息内容不被监听
- Android 谷歌 开源 通信框架 VOLLEY(二)——String/Json处理
- Android4.2如何禁止锁屏左右滑动功能?
- 关于解决android studio的"rendering problems The following classes could not be found android.support.v7
- android 分享文件
- Android launcher3常用的类
- android开发出现No Launcher activity found!解决方案
- GitHub 优秀的 Android 开源项目
- Android的Button控件的点击事件的四种写法
- Java,Android使用RSA 算法加解密
- Java,Android使用RSA 算法加解密
- Android 谷歌 开源 通信框架 VOLLEY(一)
- android注解
- CircleImageView圆形图控件+MPAndroidChart图表控件
- Android Download机制详解