Android Management API:如何通过configurationVariables让应用获取设备ID
获取ManagedConfigurationTemplate中configurationVariables的deviceId值
核心逻辑
你通过configurationVariables传入的deviceId,会根据ManagedConfigurationTemplate的定义替换模板里的变量占位符,最终成为应用托管配置的一部分。应用只需按常规方式读取托管配置即可拿到该值。
具体步骤
确认模板变量与配置项的关联
在你定义的ManagedConfigurationTemplate(即abc123对应的模板)中,必须将deviceId变量关联到某个具体的配置项键。比如模板的schema里有一个配置项(假设键为app_device_id),其默认值或可选值使用${deviceId}作为占位符。只有这样,策略中传入的deviceId才会被注入到这个配置项中。在Android应用中读取托管配置
使用系统的DevicePolicyManager获取应用的托管配置,从中提取对应键的值:Kotlin代码示例:
val devicePolicyManager = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager val restrictions = devicePolicyManager.getApplicationRestrictions(packageName) val deviceId = restrictions.getString("app_device_id") // 这里的键要和模板中关联的配置项键一致Java代码示例:
DevicePolicyManager devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); Bundle restrictions = devicePolicyManager.getApplicationRestrictions(getPackageName()); String deviceId = restrictions.getString("app_device_id");注意事项
- 确保应用已通过Android Management API作为托管应用部署到设备上,否则无法获取到托管配置。
- 模板中的变量占位符格式必须正确(
${变量名}),否则变量值不会被替换注入。
内容的提问来源于stack exchange,提问作者Mobile Dan
相关产品推荐
相关产品推荐

