我在企业中创建了2条策略。
我想在不重新注册的情况下将一个设备切换到另一种策略。
我尝试使用带有以下JSON的android管理企业devices.patch
{ "policyName": "policy2" }
执行此命令时,总是出现以下错误消息:
{
"error": {
"code": 400,
"message": "Illegal state transition from ACTIVE to DEVICE_STATE_UNSPECIFIED",
"status": "INVALID_ARGUMENT"
}
}
有人知道如何在不擦除设备的情况下更改其策略吗?
答案 0 :(得分:3)
确实可以在不重新注册设备的情况下更改设备策略,并且您与解决方案的距离不远。
之所以会出现此错误,是因为您隐式地尝试更改Device
资源的其他字段(尤其是state
字段),方法是不将它们设置为在devices.patch
中发送的资源中
您有两个选择:
将updateMask
中的devices.patch
设置为"policyName"
,以告知API您只想更改policyName
字段。
调用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”:“活动”}