【问题标题】:Android management API: find device in list of devices on android QAndroid 管理 API:在 android Q 上的设备列表中查找设备
【发布时间】:2019-06-24 09:22:50
【问题描述】:

我们有一个 cosu 应用程序,它可以通过调用 Android 管理 API 来管理其锁定状态。为此,我们收到带有devices.list 查询的设备列表,将每个设备的hardwareInfo.serialNumber 与从Build.getSerial() 收到的IMEI 进行比较,然后使用以下代码应用不同的策略:

  fun patchDevice(device: Device, policyName: String) {
    device.policyName = policyName
    androidManagementClient.enterprises().devices().patch(device.name, device).execute()
 }

但是,根据文档,硬件设备标识符在 android Q 中不再可用。(link) 目前,我们使用搭载 Android 8 的设备,但我怀疑我们的代码会在较新的操作系统上中断。所以,问题是:

  1. 有没有其他方法可以在不知道其硬件 ID 的情况下识别列表中的设备?

  2. 或者也许有办法保证在 Android Q 上使用 READ_PHONE_STATE 仍会为我们提供 IMEI?在文档中指出 如果您的应用是设备或配置文件所有者应用,则您只需要 READ_PHONE_STATE 权限即可访问不可重置的设备标识符,即使您的应用针对 Android Q。 但是,AMAPI有自己的设备所有者应用程序,所以我不确定这是否适用于我们的案例。

【问题讨论】:

    标签: android android-management-api cosu


    【解决方案1】:

    这里最简单的方法是通过托管配置将设备 name 传递给您的 COSU 应用程序。然后,您的 COSU 应用程序可以使用该名称调用 API。使用这种方法,您无需访问设备的序列号。

    这种方法在one of my previous answers中有详细解释。

    【讨论】:

    • 我不会称这种方法简单,但无论如何这是一个解决方案,谢谢!
    • 是否可以在 Device 对象中公开 ANDROID_ID?您提供的解决方案有效,但是当您拥有超过 1000 台设备时,它会变得非常麻烦。谢谢!
    • ANDROID_ID 是设备name 的最后一部分:enterprises/LC01234567/devices/<ANDROID_ID>
    猜你喜欢
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 2012-05-21
    • 2013-08-02
    相关资源
    最近更新 更多