问题描述
我的企业有 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# 代码的概述。
- 使用需要对其应用的政策创建设备请求正文。
Google.Apis.AndroidManagement.v1.Data.Device deviceBody = new Device()
{
Name = device.DeviceId,PolicyName = POLICY_2,State = "ACTIVE"
};
- 调用
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"