组件过会儿自动恢复 这是 PM 方式的固有问题 换 IFW
关掉的开关第二天自己开了?这不是 bug
如果你在 Bloker 里用 PackageManager 方式关掉了某个应用的组件,过了一段时间(几个小时、第二天、重启后)回来一看——开关又被拨回去了。
这不是 Bloker 的 bug,是 Android 系统的设计允许应用这样做。
原理回顾
- Bloker 用 PM 把组件状态改成 disabled
- 应用尝试启动这个组件 → 系统抛异常
- 应用的开发者写了异常捕获逻辑 → 收到组件禁用通知
- 应用调用
setComponentEnabledSetting()把自己的组件重新启用 - Bloker 下次刷新状态 → 看到组件又 enabled 了 → 开关显示打开
大厂应用几乎都有这个自恢复逻辑——字节、腾讯、百度系应用尤甚,它们的 SDK 里内置了检测和自恢复代码。
解决方案
换控制器:从 PM 切到 IFW。
- IFW 方式拦截的是启动 intent,不修改组件状态
- 应用查询组件状态 → 拿到 enabled → 以为没问题
- 应用尝试启动 → intent 被 IFW 拦截 → 静默失败,没有异常
- 应用完全不知道自己被拦了 → 不会触发自恢复逻辑
- 开关保持关着,钉死
切换步骤
- 打开 Bloker → 设置页 → 控制器种类
- 从
PackageManager改成Intent Firewall或IFW + PM - 回到那个应用的详情页
- 重新关掉之前被复活的组件(IFW 方式下,Bloker 会写 intent 拦截规则,不是改 PM 状态)
- 杀掉应用重开验证
- 第二天回来看 → 开关应该还是关着的
换 IFW 后如果还在复活
极端情况(大厂应用的某些组件):IFW 也拦不住?试试 IFW + PM 组合控制器——PM 层改状态(应用可能复活)+ IFW 层拦 intent(应用察觉不到)。即使应用复活了 PM 层,IFW 还有一道闸。
确认是控制器问题不是权限问题
如果开关被复活的同时还出现了以下症状:
- Bloker 其他组件的开关也在异常
- 列表加载慢或转圈
- 切换控制器时报错
那可能不是 PM 的复活问题,是权限出了问题——检查 root 授权或 Shizuku 配对状态。