Политика изменения API управления Android для устройства

Я создал 2 политики на моем предприятии.

Я бы хотел переключить одно устройство на другое без повторной регистрации.

Я попытался использовать android management enterprises devices.patch со следующим JSON

{ "policyName": "policy2" }

эта ссылка

Когда я выполняю эту команду, я всегда получаю следующее сообщение об ошибке:

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

Кто-нибудь знает, как изменить политику для устройства, не стирая его?

4 ответа

Действительно возможно изменить политику устройства без повторной регистрации, и вы не далеко от решения.

Вы получаете эту ошибку, потому что вы неявно пытаетесь изменить другие поля Device ресурс (в частности, state поле), не устанавливая их в ресурсе, который вы отправляете в devices.patch,

У вас есть два варианта:

  1. Установить updateMask в devices.patch в "policy", чтобы сообщить API, что вы хотите изменить только policy поле.

  2. Вызов devices.get чтобы получить текущий Device ресурс, а затем отправить обратно весь ресурс только с policy поле изменилось на devices.patch,

С помощью updateMask предпочтительнее, потому что это делает атомарное чтение-изменение-запись.

Как упоминал Фред, updateMask является предпочтительным способом. Вот пример того, как использовать подход updateMask в Google Colab

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()

Я нашел решение для моей проблемы:

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

Если вы попробуете это с тестового сайта API управления, добавьте updateMask как «policyName».

Другие вопросы по тегам