7

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

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

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

{ "policyName": "policy2" }

这个链接

当我执行此命令时,我总是收到以下错误消息:

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

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

4

3 回答 3

8

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

您收到此错误是因为您隐式尝试更改Device资源的其他字段(特别是state字段),方法是未将它们设置在您发送的资源中devices.patch

你有两个选择:

  1. updateMaskin设置devices.patch"policyName", 以告诉 API 您只想更改该policyName字段。

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

使用updateMask更可取,因为它执行原子读取-修改-写入。

于 2018-10-23T15:51:50.207 回答
3

正如 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()
于 2019-08-07T12:52:45.477 回答
1

我为我的问题找到了解决方案:

{ "policyName": "policy2" , "state":"active"}

于 2019-08-08T13:06:14.110 回答