Dhizuku 中文文档 下载 App

初始化与授权实务:init、requestPermission 两步走

接 API 的代码面很薄,核心就两个调用,按顺序来。

第一步:初始化

应用入口处调用初始化,与中介建立 Binder 连接:

boolean ok = Dhizuku.init(context);

第二步:请求授权

需要权限的操作前,先查授权状态,未授权则发起请求:

if (Dhizuku.isPermissionGranted()) {
    // 已授权,直接干活
} else {
    Dhizuku.requestPermission(new DhizukuRequestPermissionListener() {
        @Override
        public void onRequestPermission(int grantResult) throws RemoteException {
            if (grantResult == PackageManager.PERMISSION_GRANTED) {
                // 用户批准,继续成功路径
            } else {
                // 用户拒绝,走失败路径或引导重试
            }
        }
    });
}

要点:

授权之后做什么

拿到授权后,通过 API 提供的包装层调用设备管理能力——典型形态是把系统 DevicePolicyManager 的调用包装后经 Binder 转发给中介执行(OwnDroid 的集成就是这条路:包装后调用 transferOwnership 等方法,见配合 OwnDroid的开发者视角)。具体接口以官方 Dhizuku-API 仓库的最新文档为准。

降级设计建议