Android 动态注册短信拦截

MATLAB实战:64QAM通信系统仿真全流程解析(附误码率优化技巧) 本文提供了一份完整的64QAM通信系统MATLAB仿真实践指南。从系统架构设计、发射端格雷码映射与脉冲成形,到信道建模、接收端同步与均衡,详细解析了全链路实现流程。文章重点分享了误码率曲线与理论值偏差的排查清单和深度优化技巧,帮助工程师构建工业级精度的仿真模型,解决高阶调制系统仿真的核心难题。 阅读详情

前段时间研究短信拦截.涉及广播动态注册这一快.

一点心得,记录下来.

 

短信拦截原理: android系统在接收到短信后,会进行判读有没有应用监听着短信接收广播,有的话则先传给用户应用进行处理,应用处理完后再传给系统短信,如果谁都不监听的话,则把短信调用系统本身的短信APP.

 

广播注册一共有两种形式 : 一个是静态注册广播, 一个是动态注册广播.

两者及其接收广播的区别:

1.动态注册的广播永远要快于静态注册的广播,不管静态注册的优先级设置的多高,不管动态注册的优先级有多低>

2.动态注册广播不是常驻型广播,也就是说广播跟随activity的生命周期。注意: 在activity结束前,移除广播接收器。

 静态注册是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。

3.在同一个优先级下,谁先启动的快,谁将先接收到广播.

 

//----------------------------------------------------------------------

这么, 在做短信拦截这一块,要想比来电通360拦截短信的快, 我们就要注册动态的广播,要注册动态的广播,我们的程序就要先跑起来.这就要开一个服务,还有开机就要启动

 

步骤:

1: 注册一个静态的开机自启动广播接收器,开机后接收广播

2.广播接收方法内 立马启动一个服务

3.服务内立马动态注册一个广播接收,用于拦截短信

 

大概的操作就是这样,下面上代码

------------------------------------------------------------------------

>>>>> 首先我们需要注册一个静态开机广播接收器

 这又要考虑到 即使开机启动,我们也要跑的最快,所以需要监听很多的活动,下面有代码,有注释,我不废话了, 监听这些广播后, 将会在一开机最先启动,比360快, (在没有root权限下)

[java]  view plain copy
  1. <!-- 用于开机监听 广播接收器 -->  
  2.     <receiver android:name="src.com.BootReceiver">  
  3.         <intent-filter>  
  4.   
  5.             <!-- 开机广播 -->  
  6.             <action android:name="android.intent.action.BOOT_COMPLETED" />  
  7.             <!-- WIFI开关改变 -->  
  8.             <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />  
  9.             <!-- WIFI连接改变 -->  
  10.             <action android:name="android.net.wifi.STATE_CHANGE" />  
  11.             <!-- SIM卡状态改变 -->  
  12.             <action android:name="android.intent.action.SIM_STATE_CHANGED" />  
  13.             <!-- 网络状态改变 -->  
  14.             <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />  
  15.             <!-- 本地连接改变 -->  
  16.             <action android:name="android.intent.action.ANY_DATA_STATE" />  
  17.             <!-- 蓝牙状态改变 -->  
  18.             <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />  
  19.             <!-- 电源连接状态 -->  
  20.             <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />  
  21.             <!-- 电源断开状态 -->  
  22.             <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />  
  23.             <!-- 用户解锁状态 -->  
  24.             <action android:name="android.intent.action.USER_PRESENT" />  
  25.             <!-- 新的拨号状态 -->  
  26.             <action android:name="android.intent.action.NEW_OUTGOING_CALL" />  
  27.             <!-- 手机状态改变 -->  
  28.             <action android:name="android.intent.action.PHONE_STATE" />  
  29.             <!-- 时间改变广播 -->  
  30.             <action android:name="android.intent.action.TIME_CHANGED" />  
  31.             <!-- 日期改变广播 -->  
  32.             <action android:name="android.intent.action.DATE_CHANGED" />  
  33.             <!-- 时区改变广播 -->  
  34.             <action android:name="android.intent.action.TIMEZONE_CHANGED" />  
  35.   
  36.   
  37.   
  38.             <!-- 扩展卡插入拔出 -->  
  39.             <action android:name="android.intent.action.ACTION_MEDIA_EJECT" />  
  40.             <!-- 扩展卡未挂载 -->  
  41.             <action android:name="android.intent.action.MEDIA_UNMOUNTED" />  
  42.             <!-- 扩展卡被移除 -->  
  43.             <action android:name="android.intent.action.MEDIA_REMOVED" />  
  44.             <!-- 扩展卡检查状态 -->  
  45.             <action android:name="android.intent.action.MEDIA_CHECKING" />  
  46.             <!-- 用户想要移除扩展卡 -->  
  47.             <action android:name="android.intent.action.MEDIA_EJECT" />  
  48.   
  49.   
  50.   
  51.             <!-- 新增APP程序包名 -->  
  52.             <action android:name="android.intent.action.ACTION_PACKAGE_ADDED" />  
  53.             <!-- 屏幕开启监听 -->  
  54.             <action android:name="android.intent.action.SCREEN_ON" />  
  55.             <!-- 屏幕关闭监听 -->  
  56.             <action android:name="android.intent.action.SCREEN_OFF" />  
  57.   
  58.             <!-- 第一个启动的ACtivity -->  
  59.             <action android:name="android.intent.action.MAIN" />  
  60.   
  61.         </intent-filter>  
  62.     </receiver>  


>>>>> 只要一开机,我们就能第一时间接收到广播,在广播接收onReceive() 方法里面 里面启动一个服务 ,为了开启动态注册.

[java]  view plain copy
  1. /*** 
  2.  * 开机启动广播接收 
  3.  *  
  4.  * @author Administrator 
  5.  *  
  6.  */  
  7. public class BootReceiver extends BroadcastReceiver {  
  8.   
  9.     /** 广播接收 */  
  10.     public void onReceive(Context context, Intent intent) {  
  11.         // 接收到系统开机信息时 启动服务  
  12.         Intent in = new Intent();  
  13.         in.setAction("src.com.MyService");  
  14.         context.startService(in);  
  15.         Toast.makeText(context, intent.getAction(), Toast.LENGTH_LONG).show();  
  16.         System.out.println("启动项目 : " + intent.getAction());  
  17.     }  
  18.   
  19. }  


>>>>> 启动服务以后 ,在服务里面立马注册一个动态广播接收 监听收发短信

[java]  view plain copy
  1. /** 开始 */  
  2.     public void onStart(Intent intent, int startId) {  
  3.         super.onStart(intent, startId);  
  4.         // 判断服务一开启便注册一个SMS广播接收器  
  5.         Receiver mReceiver = null; // 广播接收类 对象  
  6.         IntentFilter iFilter = null; // 意图过滤对象  
  7.         mReceiver = new Receiver(); // 广播接收类初始化  
  8.         iFilter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); // 意图过滤初始化  
  9.         iFilter.setPriority(Integer.MAX_VALUE); // 设置优先级  
  10.         registerReceiver(mReceiver, iFilter); // 注册广播接  
  11.     }  


>>>>>在短信拦截广播里面进行判断就好了,根据自己的需求进行拦截,或者是转发,上传服务器等等. 这里我判断的是拦截187的号码发来的短信,删除短信

[java]  view plain copy
  1. /*** 
  2.  * 广播接收 
  3.  *  
  4.  * @author Administrator 
  5.  *  
  6.  */  
  7. public class Receiver extends BroadcastReceiver {  
  8.   
  9.     /** 接收 */  
  10.     public void onReceive(Context context, Intent intent) {  
  11.         // 返回OBJ对象  
  12.         Object[] pdus = (Object[]) intent.getExtras().get("pdus");  
  13.         // for循环判断  
  14.         for (Object p : pdus) {  
  15.             byte[] pdu = (byte[]) p;  
  16.             // 信息对象 初始化 = 信息对象.创建来来自(OBJ对象)  
  17.             SmsMessage message = SmsMessage.createFromPdu(pdu);  
  18.             // 返回信息来源号码  
  19.             String senderNumber = message.getOriginatingAddress();  
  20.             // 判断号码(XXXXXXX) 将终止系统广播,删除短信  
  21.             if (senderNumber.lastIndexOf("187") != -1) {  
  22.                 abortBroadcast();// 终止广播  
  23.             }  
  24.         }  
  25.         Toast.makeText(context, "判断是否拦截", Toast.LENGTH_LONG).show();  
  26.     }  
  27.   
  28. }  


结束: 最后有几点问题说一下 ,

有些改了内核的手机是拦截不了短信的,

比如小米,乐phone之类的,

都是系统应用APP接收到短信,处理完毕后 再传给第三方应用. 根本起不到拦截作用

http://blog.youkuaiyun.com/fm9333/article/details/12751597

Ubuntu升级遇到grub-efi-amd64-signed安装失败?3步搞定这个烦人错误 本文深度解析Ubuntu系统升级时grub-efi-amd64-signed安装失败并提示“cannot find EFI directory”错误的根本原因。该错误通常由EFI系统分区挂载异常、BIOS/UEFI引导模式不匹配或dpkg包状态死锁导致。文章提供了三步精准修复流程:首先检查并修复ESP分区挂载,其次处理dpkg依赖问题,最后针对传统BIOS系统提供适配方案,帮助用户安全彻底地解决这一常见升级难题。 阅读详情

相关推荐

OpenCV2.4.9+vs2012配置

下载OpenCV2.4.9。 下载地址:http://opencv.org/downloads.html2.下载后,解压。 请记住解压路径,后面根据自己的解压路径进行配置。我的路径是E:\ 3.配置环境变量 win7系统:(计算机-属性-高级系统设置-高级-环境变量) 1)编辑系统变量Path:添加E:\opencv\build\x86\vc11\bin; 2)添加/编辑用户变量P

sybil_w的博客 971

android.intent.action大全

String ADD_SHORTCUT_ACTION 动作:在系统中添加一个快捷方式。. "android.intent.action.ADD_SHORTCUT" String ALL_APPS_ACTION 动作:列举所有可用的应用。输入:无。 "android.intent.action.ALL_APPS" String ALTERNATIVE_CATEGOR...

狂徒技术分享 761

5款免费二进制编辑器横向评测:从HxD到ImHex谁更适合你?

本文对5款免费二进制编辑软件进行深度横向评测,包括HxD、wxHexEditor、010 Editor、ImHex和GNU Emacs,涵盖从轻量级到专业级的各种需求。评测基于文件处理能力、编辑功能、分析工具等核心维度,为开发者、逆向工程师和安全研究人员提供实用选择指南,帮助用户根据具体场景选择最适合的二进制编辑工具。

weixin_29278805的博客 372

android 监控任何数据变化

public class DeviceStateReceiver extends BroadcastReceiver { private static final String ACTION_CONNECTIVITY_CHANGED = "android.net.conn.CONNECTIVITY_CHANGE"; private static final Stri

wukuntingoppo的专栏 2577

【vue看板】

大屏看板提示:以下是本篇文章正文内容,下面案例可供参考提示:这里对文章进行总结:代码量较多,看板中的。

weixin_46223284的博客 2772

台达PLC DIAdesigner-AX 编程实战:从安装到通信配置

本文详细介绍了台达PLC DIAdesigner-AX编程的实战操作,从软件安装、项目创建到通信配置的全流程。重点讲解了TCP/IP通信设置、库文件管理及常见错误处理,帮助工程师快速掌握台达PLC编程技巧,提升工业自动化项目的开发效率。

weixin_29215391的博客 530

android call: call not sent

都说打call就一句话的事,很简单。我却经常简单地方阴沟里翻船。 用下面的方法打 call,最后call not sent: 哪位大虾给解答一下??? //method to make call private void makeCall(String num){     if ((num!=null)&&(!"".equals(num.trim()))){     Toast

qdulgh的专栏 4147

解锁 Bootloader 不再难!HyperOS澎湃系统小米与红米手机通用

必要时,可以在工具右上角安装驱动模块,手动安装驱动。解决方法:确保手机升级到最新稳定版,登录同一个小米账号,并在。新机型解锁时需要等待一段时间,通常为 7 天。如果账号安全评分较低,解锁等待时间会更长。如果解锁失败提示权限不足,说明账号存在安全问题。出现这个错误时,通常是因为网络不稳定。如果解锁次数已满,需要等到下个月。解锁后,手机会重启,首次开机会稍微慢一些,等耐心等待即可。按钮,开始解锁过程,注意:解锁会清除手机内所有数据。7次,开启开发者选项。,右键解压到指定文件夹。,使用小米账号登录。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 7226

常用ADB命令使用和adb logcat 命令行用法 monkey压力测试

一、常ADB命令 1. adb连接成功验证 命令:adb shell 命令:adb devices 2.使用adb安装、卸载应用 安装命令:adb install apk包名.apk 举例:安装测试电池曲线的APK 卸载命令:adb uninstall apk包名.apk 3.使用adb复制文件从手机到电脑 从手机复制到电脑命令:adb pull (文...

纸上得来终觉浅,绝知此事要躬行 1万+

QT应用编程: 基于UDP协议设计的大文件传输软件

一、环境介绍 QT版本: 5.12.6 编译器: MinGW 32 传输协议: UDP 功能介绍:软件由客户端和服务器组成,客户端通过 UDP协议不断循环地向服务端发送文件,文件传输速率可以达到10MB/s以上,文件传输后支持自动删除,客户端上可以支持每分钟创建一个文件并以时间戳命名,每个生成的文件可以设置大小,默认大小为6GB; 服务端收到文件之后,将文件进行存储到本地,可以指定时间自动删除文件;服务端可以动态计算传输速率,并写入日志文件; 服务器可以支持同时接收多个客户端的文件上传。...

2803

基于Python的军事装备数据爬取与分析:从网页抓取到数据可视化实战

本文将详细介绍如何使用Python最新技术栈构建一个完整的军事装备数据爬虫系统。我们将从爬虫基础讲起,逐步深入到异步爬取、反反爬策略、数据存储与分析等高级主题,最终实现一个能够自动抓取、清洗、存储和分析军事装备数据的完整解决方案。文章包含大量实战代码示例,涉及requests-html、aiohttp、Playwright等现代爬虫库,以及MongoDB存储、Pandas分析和Pyecharts可视化等技术。关键词:Python爬虫、军事数据、异步爬取、反反爬、数据可视化。

2201_76125261的博客 1189

短信,电话拦截的优先级问题

这学期选了网络安全与技术的课,最后要交一个与安全有关的大作业,由于安卓正火,就想做一个类似360的手机拦截的应用,开始以为很简单,但是越到后面,问题越多。一个典型的就是,在模拟器上应用能拦截电话和短信,可是到了真机上,就只能拦截电话,不能拦截短信。 开始我以为是优先级的问题,查看的android的文档, The value must be an integer, such as "100".

既然目标是地平线 留给世界的只能是背影 1508

【入门AUTOSAR网络管理测试】CANoe测试T_WakeUp时间

随着智能电动汽车行业的快速发展,目前AUTOSAR网络管理也得到了广泛应用,AUTOSAR网络管理测试也是汽车网络测试中非常重要的环节,NM问题导致的汽车ECU不能唤醒、电瓶亏电等问题,对于新入门AUTOSAR网络管理测试的同学不清楚如何开展测试,那么本章节就主要给大家介绍网络管理中T_WakeUp时间如何测试。【入门AUTOSAR网络管理测试】AUTOSAR网络管理规范需求解读。

测试领域技术分享 2136

Android 拦截短信并且删除短信(二)

其实在第一篇中讲解的那个BroadcastReceiver 的优先级,虽然说比系统短信软件的优先级高,但是相比起第三方的就不行了(如GO短信),当你的手机安装有GO短信时,你会发现,GO短信抢先一步将短信拦截了,并屏蔽掉了~~自己写的拦截短信功能失效~~          这就涉及到了优先级的问题~~(参考文章:http://blog.youkuaiyun.com/kingsonl/article/deta

kyrin(云中鹤) 2354

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

短信拦截,如何抢先于QQ通讯录,360

最近写一个应用(A),需要拦截短信分析。一般是这样实现的:注册一个接受短信Intent-Filter,获取短信广播,分析短信内容然后相应处理。对特定短信终止广播继续(abort方法),阻止其进入收件箱。大致就是这么一个过程。 但上述方式,在QQ通讯录/360/飞信存在的情况下,拦截短信失败~也就是说它们抢先拿到了收短信的广播,并将其中断了。那么如何解决这个问题呢~

开心阳 1925

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

android学习笔记-拦截短信

虽然手中没有开发需工拦截短信的应用,但是看到这个文章对于加深对android广播机制理解也有一定作用。 以下内容转自网络非本人内容: 怎样绕开QQ通讯录和360的广播中断,经过我多次测试发现: 广播分2种,无序广播和有序广播。可以理解为散列和队列广播。 首先无序广播,不能中断,分发机制有点类似散列发送。这种广播的的发送为:context.sendBroadcast 这种广播是不能中断的,请看A

129

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

android短信拦截示例代码

android短信拦截示例代码 举报描述不清违规检举侵权投诉| 分享| 2013-10-10 16:16 wangyu19900123 | 浏览 1085 次 手机 求相关的示例代码。要求真机验证通过的,可以优先于360安全卫士等安全软件进行拦截。 希望android高手可以帮我解决,复制粘贴,就算了,网上太多的都是复制粘贴,没什么太高的技术含量。 短信拦截的关

autumn20080101的专栏 876

期末安卓习题--第七章

第七章安卓第七章选择题判断题填空题 安卓第七章 选择题 1.关于BroadcastReceiver的说法不正确的是(D ). A、 广播接收器是android四大组件之一 B、 对有序广播,系统会根据接收者声明的优先级别按顺序逐个执行接收者 C、 接收者声明的优先级别在的android:priority属性中声明,数值越大优先级别越高 D、 在配置文件manifest中配置接收器叫做动态注册 2.要发送一个广播,需要实现sendBroadcast方法,假设其中intent=new Intent(“com.i

万事胜意 9865

Android 电话和短信拦截

之前用的手机上没有黑名单功能,下载第三方的软件又觉得不安全,所以自己写了一个简单版本的凑合用,在这里记录一下。 因为之前有做过短信的拦截相关功能,但是电话拦截接触也不是很多,所以并没有做过详细的测试(自己在两款手机上跑过,都是ok的),在做这个功能的时候也参考过几篇博客,但是具体地址没记住。 一、电话拦截 电话拦截的实现其实就是由电话的监听和电话的挂断两个部分组成,其中电话监

jeden的专栏 5099

短信拦截

[size=medium]最近写一个应用(A),需要拦截短信分析。一般是这样实现的:注册一个接受短信Intent-Filter,获取短信广播,分析短信内容然后相应处理。对特定短信终止广播继续(abort方法),阻止其进入收件箱。大致就是这么一个过程。 但上述方式,在QQ通讯录/360/飞信存在的情况下,拦截短信失败~也就是说它们抢先拿到了收短信的广播,并将其中断了。那么如何解...

IPJMC的专栏 235

Android里广播Broadcast的使用

定义 在Android中,广播Broadcast也是四大组件之一,它是一种广泛运用在应用程序内部或不同应用程序之间传输信息的机制。比如像一些垃圾短信骚扰电话拦截程序,他们会在接收到短信和拔入电话时,接收系统这两个广播,然后在系统做出反应前先做相应用过滤逻辑处理。除了系统广播外,我们也可以自定义一些广播用来传输数据和接收数据,又或者在Service(如不清楚Service的使用,请看《Androi...

子云心的博客 903

短信拦截,如何抢先于360、QQ通讯录

最近写一个应用(A),需要拦截短信分析。一般是这样实现的:注册一个接受短信Intent-Filter,获取短信广播,分析短信内容然后相应处理。对特定短信终止广播继续(abort方法),阻止其进入收件箱。大致就是这么一个过程。 但上述方式,在QQ通讯录/360/飞信存在的情况下,拦截短信失败~也就是说它们抢先拿到了收短信的广播,并将其中断了。那么如何解决这个问题呢~ 本来以为腾讯是拦截ril层的

sihai_1991的专栏 860

Android短信Receiver优先级

转载:http://blog.youkuaiyun.com/luck_apple/article/details/7365176 Android上的一些应用都有拦截短信广播的功能,360,各种手机卫士,还有一些通讯录。最恼人的就是通讯录这些,有的甚至是拦截短信,扔掉广播,由它帮你入库。 经过反编译,有点眉目。360,金山手机卫士的manifest里面根本就没有注册短息的Receiver

zhangxinrun的专栏 2373

Android中如何在QQ通讯录,360之前拦截短信

Android中如何在QQ通讯录,360之前拦截短信 一般是这样实现的:注册一个接受短信Intent-Filter,获取短信广播,分析短信内容然后相应处理。对特定短信终止广播继续(abort方法),阻止其进入收件箱。大致就是这么一个过程。 但上述方式,在QQ通讯录/360/飞信存在的情况下,拦截短信失败~也就是说它们抢先拿到了收短信的广播,并将其中断了。那么如何解决这个问题呢~ 本来以为腾讯

yakedar的专栏 793

android的receiver优先级

Android上的一些应用都有拦截短信广播的功能,360,各种手机卫士,还有一些通讯录。最恼人的就是通讯录这些,有的甚至是拦截短信,扔掉广播,由它帮你入库。 经过反编译,有点眉目。360,金山手机卫士的manifest里面根本就没有注册短息的Receiver,所以他们只可能是动态注册短信广播接收器。 还有这个东西: [html] view plainc

kingsonl的专栏 1万+

广播组件的实践——短信黑名单

转载请注明出处:http://blog.youkuaiyun.com/chengbao315/article/details/51011358 相关阅读: Android服务组件案例:http://blog.youkuaiyun.com/chengbao315/article/details/50997218 上回书我提到了想要编写安卓四大组件案例的想法,那么说到做到,这次我就来做一个Android

chengbao的专栏 1196
上一篇: 基于Ubuntu 14.04 LTS编译Android4.4.2源代码
下一篇: mysql-python安装时EnvironmentError: mysql_config not found
hookfeng
博客等级 码龄12年 4粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值