前言
本文的源码采用anroid9的
首先待拦截的号码需要进行存储,而且号码的个数肯定很多,用户使用的情况复杂,所以选择数据库进行存储。拦截层需要在系统中进行,所以上层APP需要访问数据,所以数据库不能是本地数据库,需要是以contentprovider形式提供服务。
frameworks/base/core/java/android/provider/BlockedNumberContract.java
BlockedNumberContract中包含了:
- BlockedNumbers ,存取黑名单号码&content_uri
- SystemContract 系统与黑名单ContentProvider的联系接口
- BlockSuppressionStatus
桥接器类
BlockChecker 是在 InboundSmsHandler 与BlockedNumberContract之间的一个类,InboundSmsHandler不直接调用BlockedNumberContract的方法。根据设计模式的定义,BlockChecker是一个桥接器类。
拦截
InboundSmsHandler短信转发是在这个类中。
/**
* Process the inbound SMS segment. If the message is complete, send it as an or