android广播机制初步学习——短信黑名单

andriod广播机制中主要使用到的两个类:Broadcast和BroadcastReceiver。即一个发送一个接受。
发送的时候是用Intent来携带数据(广播)的,利用Intent中的标识来匹配,实现接收需要接收的广播。
首先是注册,有两种方式:

一个是配置文件注册:
一个是代码注册:
配置文件注册时:相当于是注册到android系统的CPU里面去了,一旦注册成功,就无法再控制他。不管应用程序关没关闭,只要有对应的广播来,都会调用对应的广播接收器类。比如电池管理程序,比如短信、电话的黑名单功能,都是需要系统开机就运行,一直监测到关机。
代码注册时:应用程序关闭就不再接受广播。
在注册广播的时候,要分析清楚应用程序的功能,选择合适的注册方式。


android的广播分三种:
1、常规广播:所有匹配的接收器都会接收到此广播。                                发送方式:sendBroadcast(intent)
2、粘性广播:可以在接受到注册之前发出的广播。最常见的例子就是WIFI。          发送方式:sendStickyBroadcast(intent)
3、有序广播:根据广播接收器的意图过滤器的priority属性值的大小一次调用,并可以通过调用abortBroadcast()阻止广播继续向下传播。
发送方式:sendOrderedBroadcast(intent,"permission").这里短信的广播机制就是有序广播,因此可以在接收到广播之后做点儿什么,加黑或者转发什么的。


短信防火墙以的思路是:首先是这个软件需要在手机系统启动的时候自动启动,而android手机在启动的时候会发送一个机广播,写一个类继承BroadcastReceiver接受开机广播来启动应用程序。
然后就是拦截短信,短信是有序广播,再得到短信的发送号码之后,与预先添加的黑名单进行比较,如果相同,就阻止接受这个号码发来的短信。
同理还可以窃听别人发来的短信,从广播中读到特定的号码,将这个短信发送到别的号码或者上传到网络。             
下面是源码:
 注册接收广播:
注册短信接收广播:
androidManifirst.xml文件配置:



以上是一点儿自己的总结,如果有理解不到位或者是错误的地方,欢迎指教。       ^_*
原文地址:https://www.cnblogs.com/badboy/p/2183710.html