中介授权是怎么跑通的:请求、批准、转发三步
把「分发权限」拆开看,其实就三步:应用来请求、你来批准、它替应用执行。
第一步:应用带着 API 来敲门
工具类应用(Hail、Amarok、OwnDroid 等)集成了官方提供的 Dhizuku API。首次使用需要权限的功能时,应用会向中介发起一次授权请求——这一步对应用来说只是几行代码,对系统来说则是一次跨进程通信(Binder)。
第二步:你决定批不批
中介收到请求后弹出确认界面。批了,这个应用就获得了借用资格;没批,应用只能提示功能不可用。2.11.1 版本之后还可以开启白名单模式,只有白名单里的应用才有资格发起请求,避免来路不明的应用蹭权限。
第三步:它替应用去执行
批准之后,应用对设备管理能力的调用会被包装后转交给中介执行。应用自己从头到尾没有持有设备所有者身份,却完成了原本需要这个身份才能做的事——冻结应用、修改设备策略等。对应用开发者来说,接入 API 比自己折腾激活成本低得多。
常驻服务为什么不能死
整条链路依赖那个常驻前台服务。服务被系统杀掉,授权应用就会报「服务不可用」——这也是为什么建议把它加入电池优化白名单,见常驻与后台。
激活前后状态一目了然
应用首页顶部有一张状态卡:激活前显示「等待激活」,成功后切换为已激活状态。三张激活入口卡对应三条不同路径,详见路径总览。
原理清楚了,下一步就是动手前的准备:先看设备上要不要提前清账号。