阻止应用卸载:不让关键工具被删除
原理
Android 的 DevicePolicyManager 有 setUninstallBlocked() API——Device Owner 对某个应用调用后,系统会:
- 在应用管理器里隐藏卸载按钮(灰色不可点或直接消失)
- 阻止 ADB shell pm uninstall 命令
- 阻止应用商店里的卸载操作
- 阻止"禁用"操作(某些 ROM 上禁用被视为卸载的轻量版)
操作
OwnDroid → 应用 → 选中应用 → 打开「阻止卸载」开关。或者选应用组批量操作。
取消阻止卸载后,应用恢复正常的卸载能力。
适合阻止卸载的应用
自身管控链的关键
| 应用 | 为什么要阻止卸载 |
|---|---|
| OwnDroid 本身 | Device Owner 模式下 OwnDroid 不能被卸载是系统级保证,但 Dhizuku/Work Profile 模式下需要手动打开阻止卸载 |
| DNS 过滤/VPN App | 配合 Always-on VPN + VPN Lockdown,不让用户卸载绕过过滤 |
| 家长控制 App | 不让孩子发现并卸载家长控制工具 |
| 文件管理器 | 防止自己误删系统文件 |
预装但不可卸载的 App
有些厂商 ROM 预装的 App 系统里无法直接卸载,Device Owner 的阻止卸载进一步加固。
无法阻止的情况
- 系统签名的应用——如果 Device Owner 本身就是系统签名,阻止卸载对它自己无效(系统应用有特权)
- 恢复出厂设置——factoryReset() 会清除所有应用,任何卸载阻止都没用
- 某些 ROM 提供的特殊卸载入口(比如 MIUI 的"卸载更新"按钮)可能绕过阻止卸载——实测确认
结合"禁止安装/卸载应用"用户限制
OwnDroid 的用户限制区有 no_install_apps 和 no_uninstall_apps 两个开关——开启后:
no_install_apps:设备上无法安装任何新应用(从任何渠道,包括 APK 安装、应用商店、ADB)no_uninstall_apps:设备上无法卸载任何应用
这两个是设备级的硬开关,比单应用级别阻止卸载更狠。但开了之后你自己也装不了新 App——需要在 OwnDroid 里临时关闭再装。