`

SMS研究(转)记录地址

阅读更多

拦截短信 作者:bingzhi更新于 07月26日访问(70)评论(1) 一、场景需求 在做一些需求的时候碰到了,需要把收费短信给屏蔽了,或者说拦截比较正确。 二、网上查了一些资料 How to prevent SMS going to inbox in Android? http://stackoverflow.com/questions/9175969/how-to-prevent-sms-going-to-inbox-in-android?lq=1 This shows a sample of how to delete SMS https://gist.github.com/vivdub/5178e798d9a00cac4ddb How to delete an SMS from the inbox in Android programmatically? http://stackoverflow.com/questions/419184/how-to-delete-an-sms-from-the-inbox-in-android-programmatically?lq=1 Can we delete an SMS in Android before it reaches the inbox? http://stackoverflow.com/questions/1741628/can-we-delete-an-sms-in-android-before-it-reaches-the-inbox?lq=1 Android SMS intercept without notification icon or WAP-PUSH messages http://stackoverflow.com/questions/1732537/android-sms-intercept-without-notification-icon-or-wap-push-messages 三、大致整理如下: 1、需要拦截短信用一个广播接收器去接收接收短信的广播 2、这个广播接收器的优先级要比别人都高 四、主要代码如下 1、SMSReceiver 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 public class SMSReceiver extends BroadcastReceiver { private static final String TAG = "SMSReceiver "; public static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED"; private static final String MSG_KEY1 = "key1"; private static final String MSG_KEY2 = "key2"; public SMSReceiver() { super(); Log.i(TAG, "SMSReceiver()"); } @Override public void onReceive(Context context, Intent intent) { Log.i(TAG, "onReceive()"); Log.i("onReceive", ""+intent.getAction()); if(SMS_RECEIVED.equals(intent.getAction())){ Object[] pdus = (Object[]) intent.getExtras().get("pdus");//获取短信内容 for(Object pdu:pdus){ byte[] data = (byte[])pdu;//获取单条短信内容,短信内容以pdu格式存在 SmsMessage message = SmsMessage.createFromPdu(data);//使用pdu格式的短信数据生成短息对象 String sender = message.getOriginatingAddress();//获取短信的发送者 String content = message.getMessageBody();//获取短信的内容 Date date = new Date(message.getTimestampMillis()); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String sendTime = format.format(date); Log.i(TAG, "sender:"+sender+" content:"+content+" sendTime:"+sendTime); //SmsManager manager = SmsManager.getDefault(); //把你拦截到的短信发送到指定号码,此处为5566 //manager.sendTextMessage("5566", null, "发送人:"+sender+"----发送时间:"+sendTime+"----内容:"+content, null, null); //if("number".equals(sender)){ // abortBroadcast(); //} //如果不想让主机接收某个号码的信息、number为指定号码 Log.i("content.contains"+MSG_KEY1, ""+(content.contains(MSG_KEY1))); Log.i("content.contains"+MSG_KEY2, ""+(content.contains(MSG_KEY2))); //如果短信内容包含MSG_KEY1则拦截该短信 //或者可以其他条件eg:号码是什么的时候拦截该短信 if(content.contains(MSG_KEY1)){ //广播不在往下传 abortBroadcast(); // }else if(content.contains(MSG_KEY2)){ abortBroadcast(); } } } } } 2、在AndroidMenifest.xml中配置 1 2 3 4 5 6 7 8

<!-- 2147483647为Integer.MAX_VALUE -->

3、在使用的Activity中OnCreate()中注册 1 2 3 4 smsReceiver = new SMSReceiver(); IntentFilter filter = new IntentFilter(); filter.setPriority(Integer.MAX_VALUE); registerReceiver(smsReceiver, filter); 4、在使用的Activity中的OnDestroy中 1 unRegistSmsReceiver(); 1 2 3 4 5 private void unRegistSmsReceiver(){ if(smsReceiver!=null){ unregisterReceiver(smsReceiver); } } 五、By the Way 下面代码可以查看这些短信广播接收者的优先级 1 2 3 4 5 Intent smsReceIntent = new Intent("android.provider.Telephony.SMS_RECEIVED"); List infos = this.getPackageManager().queryBroadcastReceivers(smsReceIntent, 0); for(ResolveInfo info:infos){ Log.i(TAG, ""+("Receiver: "+info.activityInfo.name+", priority:"+info.priority)); } 声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息 原文作者: bingzhi

 

 

 

原文地址: http://my.eoe.cn/787339/archive/5967.html

分享到:
评论

相关推荐

    一个简易的流媒体测试工具

    sms_test/ns_log是一个日志记录动态库 这个工具是本人突击研究了一周live555的示例程序写的,免费提供下载,其中的bug估计不少,如果你发现并修改了其中的bug,希望也能发送给我一份,再次谢过!

    道路交通matlab代码-trafficnoisesms:基于谱建模综合的交通噪声源建模

    在本知识库中,几乎所有用于研究频谱建模综合(SMS)的交通噪声听觉化处理的代码都在此存储库中。 整个代码库都是针对MATLAB的,但是我相信您应该能够在octave中运行其中的大部分代码。 结构 core包含主要的SMS模型...

    基于Android的文件管理系统-研究论文

    研究的目标集中在六个方面,即:基于Android的文件管理系统的开发和设计,考勤表,备忘录和信件,向用户发送通知模块的开发,可以管理文件的模块的开发, 发送提醒消息、警告消息和信息消息等通知的模块的开发,记录...

    亚马逊FBA关键词工具+产品研究。「Amazon FBA Keyword Tool + product research」-crx插件

    关键字跟踪器可让您记录您在营销和优化工作中所做的更改,以便您可以直观地看到这些更改如何影响给定关键字的产品列表排名 HIJACKER ALERT彻底摆脱劫机者,方法是监视您的列表,并在有人跳到您的列表或窃取您的购买...

    华为研发笔试题西安Java-modem:基于AT的调制解调器的Go驱动程序

    华为研究笔试题西安Java调制解调器 AT 调制解调器的低级 Go 驱动程序。 modem 是一个 Go 库,用于与基于 AT 的调制解调器进行交互。 最初的动力是提供通过 GSM 调制解调器发送和接收 SMS 的功能,但该库通常可用于...

    java开源包101

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    GT3X 姿势预测算法:根据 ActiGraph GT3X 原始数据预测身体姿势的功能-matlab开发

    该函数根据以 30 Hz 记录的髋部佩戴的 ActiGraph wGT3X-BT 加速度计原始数据预测身体姿势。 Kuster 等人描述了此功能的开发。 2019 年,doi:10.1111/sms.13601,发表在斯堪的纳维亚医学与科学运动杂志上。 如果使用...

    WAP 无线应用协议

    1.2 研究背景 1 1.2.1 研究目的 1 1.2.2 要求 2 1.3 体系结构概述 3 1.3.1 万维网模型 3 1.3.2 WAP模型 4 1.3.3 WAP网络示例 5 1.3.4 安全模型 6 1.4 WAP体系结构的组成 6 1.4.1 无线应用环境 6 1.4.2 无线会话协议 ...

    HRM4MiBand2:HRM4MiBand2

    针对老年人,健康有障碍的人或普通人群的这类应用越来越成为世界范围内关注的焦点和研究目标。 当前可用的老年医学应用本身已经成为监测健康,健康,体力活动和安全监控的一项资产。 这些措施从根本上减少了老年人...

Global site tag (gtag.js) - Google Analytics