设备的Android Management API更改政策

时间:2018-10-23 12:51:55

标签: android policy android-management-api

我在企业中创建了2条策略。

我想在不重新注册的情况下将一个设备切换到另一种策略。

我尝试使用带有以下JSON的android管理企业devices.patch

{ "policyName": "policy2" }

this link

执行此命令时,总是出现以下错误消息:

{
 "error": {
  "code": 400,
  "message": "Illegal state transition from ACTIVE to DEVICE_STATE_UNSPECIFIED",
  "status": "INVALID_ARGUMENT"
 }
}

有人知道如何在不擦除设备的情况下更改其策略吗?

3 个答案:

答案 0 :(得分:3)

确实可以在不重新注册设备的情况下更改设备策略,并且您与解决方案的距离不远。

之所以会出现此错误,是因为您隐式地尝试更改Device资源的其他字段(尤其是state字段),方法是不将它们设置为在devices.patch中发送的资源中

您有两个选择:

  1. updateMask中的devices.patch设置为"policyName",以告知API您只想更改policyName字段。

  2. 调用devices.get获取当前的Device资源,然后仅将policyName字段更改为devices.patch来发送整个资源。

最好使用updateMask,因为它会原子地进行读取-修改-写入。

答案 1 :(得分:0)

如Fred所言, updateMask 是首选的选择。这是有关如何在Google colab中使用 updateMask 方法的示例

swap_result = androidmanagement.enterprises().devices().patch(
name='enterprises/ENTERPRISE_NAME/devices/DEVICE_ID', updateMask='policyName', body={ "policyName": "enterprises/ENTERPRISE_NAME/policies/NEW_POLICY_NAME"}).execute()

答案 2 :(得分:0)

我为我的问题提供了解决方案:

{“ policyName”:“ policy2”,“ state”:“活动”}