清除应用存储与远程安装卸载
清除应用存储
原理
DevicePolicyManager 的 clearApplicationUserData() API——Device Owner 可以不进入系统设置、不打开应用、不需要用户确认,直接清除任何应用的数据目录。
效果
- 应用的所有本地存储(databases、shared_prefs、files、cache)被清空
- 应用回到"刚安装完"的初始状态
- 应用不被卸载,只是数据没了
- 应用自己完全无法阻止这个操作
OwnDroid 界面上每个应用都有「清除存储」按钮,也可以对整个应用组批量清除。API 远程调用:
CLEAR_APP_STORAGE(package: "com.example.app") # 需要 Android 9.0+
远程安装 APK
原理
DevicePolicyManager 的 installApplication() API——Device Owner 可以直接传入 APK 文件路径,静默安装,没有任何安装确认弹窗。
用途
- 批量部署:企业 kiosk 设备需要预装 20 个 App,写个 OwnDroid API 脚本批量静默安装
- 家长控制:在孩子设备上静默安装管控工具,不让孩子看到安装过程
- 自我部署:在自己的设备上一键批量安装常用 App
注意事项
- 传入的必须是本地 APK 文件路径(file:// 或 content:// URI),不能是网络 URL
- Android 12+ 的「未知来源安装」限制对 Device Owner 无效
- 安装前系统会校验 APK 签名——签名和已安装版本不一致会升级/降级
远程卸载应用
DevicePolicyManager 的 removeApplication() API——Device Owner 可以静默卸载任何应用(除了 Device Owner 自己和系统核心应用)。
静默卸载意味着没有任何确认弹窗——调用就执行。适合批量清理预装 App 或远程清理被封禁的 App。
安全边界
以上三个操作(清除存储、静默安装、静默卸载)都是不可逆且无确认的——API Key 一旦泄漏,攻击者可以远程:
- 清除所有应用数据(等于远程破坏用户工作)
- 静默安装恶意 APK
- 静默卸载所有防病毒/管控 App
务必妥善保管 OwnDroid API Key,不要提交到公开代码仓库,不要写入明文配置文件。