Intent Firewall 是什么 Android 4.4.2 就有的系统级意图防火墙
IFW 是 Android 系统自带的"意图防火墙"
Intent Firewall(简称 IFW)从 Android 4.4.2(API 19)开始内置在 Android Framework 层,到现在最新的 Android 版本都一直生效。它的原理很简单:每个应用或系统发出的 intent 都会先经过 IFW 过滤,规则匹配就放行,不匹配就拦住。
Bloker 的 IFW 控制器就是利用了这个系统能力——当你在 Bloker 里关掉某个组件的开关时,Bloker 实际上是写了一条 IFW 规则:拒绝任何启动这个组件的 intent。
IFW vs 传统防火墙的类比
| 传统防火墙 | Intent Firewall |
|---|---|
| 拦截网络请求 | 拦截 Android 组件启动请求(intent) |
| 规则存防火墙设备的配置 | 规则存系统 XML 文件(/data/system/ifw/ 目录下) |
| 规则改完立即生效 | XML 文件改完 IFW 自动加载,立即生效 |
| 检查 IP/端口/协议 | 检查 intent 的 action/category/data/component |
IFW 能做什么
- 拦截指定组件的所有启动 intent(最常用,Bloker 的核心用法)
- 按 action 类型过滤(比如只拦截
BOOT_COMPLETED广播的 intent) - 按发送方包名过滤(比如只拦应用 A 发送的 intent,不拦应用 B)
- 按接收方包名 + 组件名精确过滤(最精准,Bloker 默认用这种)
IFW 的限制
- IFW 规则存储目录(
/data/system/ifw/)只有系统应用能读写,第三发应用没有权限——所以需要 root 权限才能改 - IFW 只拦 intent,不拦其他形式的组件调用(比如通过 ContentProvider 的 call 方法)——但这种情况极少
- 某些非常底层的系统组件可能绕过 IFW(极罕见,普通应用不会遇到)
Bloker 怎么用 IFW
Bloker 在用户界面上把 IFW 的使用变得极其简单:你只需要像用 PM 一样点开关——Bloker 自动把"禁用组件 X"翻译成对应的 IFW XML 规则并写入系统目录,应用完全不感知这个过程。
对用户来说,PM 和 IFW 在操作上没有任何区别——同一个组件列表、同一个开关界面,只是背后 Bloker 走的通道不同。选哪个控制器只需要在设置页点一下就行。