Android 12 ManagedProvisioning流程适配Android 10用户同意前置需求咨询
Android 12 下调整ManagedProvisioning流程:前置用户同意环节
问题背景
集成AirWatch管理应用Intelligent Hub时,梳理Android 12的ManagedProvisioning代码库发现,Admin App的注册流程先于用户同意环节执行。需要实现类似Android 10的流程:先完成用户同意,再执行Admin App注册。
核心修改思路
Android 12对ManagedProvisioning的流程顺序做了调整,要回退到Android 10的逻辑,需修改PreProvisioningActivity及关联流程的执行顺序,将用户同意步骤前置到Admin App注册之前。
具体修改步骤
调整PreProvisioningActivity的任务执行顺序
- 找到
PreProvisioningActivity中触发Admin App注册的代码段,将其移至用户同意流程的回调之后。 - 示例逻辑调整:
// 原逻辑:先启动Admin App注册 startAdminAppRegistration(); showUserConsentUI(); // 修改后:先显示用户同意UI,同意后再启动注册 showUserConsentUI(new ConsentCallback() { @Override public void onConsentGranted() { startAdminAppRegistration(); } @Override public void onConsentDenied() { // 处理用户拒绝后的流程,比如终止 provisioning finishProvisioningWithResult(RESULT_CANCELED); } });
- 找到
修改ProvisioningFlowController的步骤配置
- 找到管理provisioning步骤的
ProvisioningFlowController类,调整步骤列表中USER_CONSENT和ADMIN_APP_REGISTRATION的顺序,确保用户同意步骤先执行。 - 示例调整:
// 原步骤顺序 private List<ProvisioningStep> getDefaultSteps() { return Arrays.asList( AdminAppRegistrationStep.class, UserConsentStep.class, // 其他步骤 ); } // 修改后步骤顺序 private List<ProvisioningStep> getDefaultSteps() { return Arrays.asList( UserConsentStep.class, AdminAppRegistrationStep.class, // 其他步骤 ); }
- 找到管理provisioning步骤的
处理状态回滚与异常情况
- 若用户在同意后取消注册,需确保已执行的同意状态能正确回滚,避免残留配置。
- 在
AdminAppRegistrationStep的失败回调中,添加清除用户同意状态的逻辑。
适配Android 12的权限与API变更
- Android 12对设备管理权限的申请逻辑有调整,需确保用户同意环节的权限请求符合系统要求,避免出现权限被拒导致流程中断。
注意事项
- 修改系统
ManagedProvisioning代码需要定制ROM权限,若无法修改系统应用,可考虑通过自定义Provisioning流程替代原生流程,在自己的引导Activity中先完成用户同意,再调用Admin App注册接口。 - 需测试不同场景下的流程稳定性,包括用户同意后取消、注册失败等边缘情况。
内容的提问来源于stack exchange,提问作者Amartya
相关产品推荐
相关产品推荐

