是否可以更改设备策略?

问题描述

我的企业有 2 个政策:POLICY_1 和 POLICY_2。 我的设备已配置 POLICY_1,但我想将其更改为 POLICY_2。

我正在使用 Java 库“com.google.apis:google-api-services-androidmanagement:v1-rev20201012-1.30.10”。

我正在尝试使用以下代码更改其政策:

private void updateMyDevicePolicy(String enterpriseName,String deviceName) throws IOException {
    Device device = getMyDevice(deviceName);
    String policyName = enterpriseName + "/policies/POLICY_2";
    device.setPolicyName(policyName);
    device.setAppliedPolicyName(policyName);
    Device deviceUpdated = androidManagementClient.enterprises().devices().patch(deviceName,device).execute();
    
    System.out.println("DEVICE policy updated = " + deviceUpdated);
}

问题是:patch 命令不起作用。 设备政策仍为“POLICY_1”。

请问,我该如何更改设备政策?

解决方法

这很有可能,我也经常这样做。 使用 Device Patch 请求并传入需要应用于设备的 PolicyId。

应用于设备的策略名称,格式为enterprise/{enterpriseId}/policies/{policyId}。该字段可以通过补丁请求进行修改。调用enterprise.devices.patch时可以只指定policyId,只要policyId不包含斜线即可。策略名称的其余部分是推断出来的。 Ref

这是我的 C# 代码的概述。

  1. 使用需要对其应用的政策创建设备请求正文。
Google.Apis.AndroidManagement.v1.Data.Device deviceBody = new Device()
{
    Name = device.DeviceId,PolicyName = POLICY_2,State = "ACTIVE"
};
  1. 调用 Device Patch 请求
EnterprisesResource.DevicesResource.PatchRequest attachNewPolicy = 
new EnterprisesResource.DevicesResource.PatchRequest(service,deviceBody,device.DeviceId);
attachNewPolicy.Execute();

这应该将新政策应用于设备。

,

可以使用 devices().patch() 来更新设备的策略。但是,需要在 devices().patch() 中将 updateMask 设置为将更新的字段,在本例中为 policyName,以表明您只想更改该特定字段。

下面是使用不同语言的updateMask的实现:

androidmanagement.enterprises().devices().patch(
    name=device_name,updateMask="policyName",body=json.loads(devices_json)
).execute()

在此代码中,“policyName”从enterpriseName + "/policies/POLICY_1" 更新为enterpriseName + "/policies/POLICY_2"