You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

生成Enrollment Token返回错误QR码的问题排查

问题分析与解决方案

核心问题

你错误地将qrCode的值以JSON字符串的形式传入,而Android Management API要求该字段接收的是一个原生Python字典(对应JSON对象)。当你传入字符串时,API无法正确解析自定义配置,因此自动 fallback 到默认的Google DPC应用。

修正后的代码

import json
import androidmanagement

# 假设 enterprise_name 和 policy_name 已正确定义
enrollment_token = androidmanagement.enterprises().enrollmentTokens().create(
    parent=enterprise_name,
    body={
        "policyName": policy_name,
        "qrCode": {
            "android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME": "com.tmp.app.admin/.AdminReceiver",
            "android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM": "MUQ6NEQ6MDQ6NTY6M0E6ODA6Mzg6NEY6NUM6ODI6Qzk6NUY6MkM6QjA6RTk6RDc6QTM6RjI6NDg6NTA6QTQ6RjY6QTA6RjM6MTA6NUM6MzI6NkY6QkU6NUI6M0E6Qzk=",
            "android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION": "https://myurl-stuff.com/link_part/my_app.apk",
            "android.app.extra.PROVISIONING_SKIP_ENCRYPTION": False,
            "android.app.extra.PROVISIONING_WIFI_SSID": "MY_WIFI_SSID",
            "android.app.extra.PROVISIONING_WIFI_PASSWORD": "my_wifi_password",
            "android.app.extra.PROVISIONING_WIFI_SECURITY_TYPE": "WPA"
        }
    }
).execute()

print(json.dumps(enrollment_token, indent=2))

关键注意事项

  • 避免嵌套字符串:qrCode对应的value直接传入Python字典即可,不需要用引号包裹成字符串,API客户端库会自动处理成正确的JSON格式返回。
  • 布尔值语法:Python中布尔值首字母大写(False),客户端库会自动转换为JSON标准的false。
  • 签名校验和校验:确保你的签名校验和是正确的,可通过keytool -printcert -jarfile your_app.apk提取证书指纹后转换为Base64格式。

验证结果

修正后调用API,返回的qrCode字段会包含你自定义的设备管理员组件、APK下载地址等配置,而非默认的Google DPC应用信息。

内容的提问来源于stack exchange,提问作者Adam Varhegyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 18:40:38