Тело политики для установки Приложения на Управляемое устройство с помощью AndroidManagement API - PullRequest
0 голосов
/ 05 апреля 2019

Я создаю приложение MDM, используя Google AndroidManagement API в консольном приложении C #, и я создал политику для устройства, которая имеет значения по умолчанию.

Я пытаюсь создать Политику приложения для установки нового пакета приложения на устройстве, и все блоги предлагают добавить политику приложения в формате JSON:

{
  "applications": [
    {
      "packageName": "com.example",
      "installType": "FORCE_INSTALLED",
      "lockTaskAllowed": true,
      "defaultPermissionPolicy": "GRANT"
    },
    {
      "packageName": "example2",
      "installType": "FORCE_INSTALLED",
      "lockTaskAllowed": false,
      "defaultPermissionPolicy": "GRANT"
    },
    {
      "packageName": "example3",
      "installType": "FORCE_INSTALLED",
      "lockTaskAllowed": true,
      "defaultPermissionPolicy": "GRANT"
    }
  ],
  "cameraDisabled": true,
  "screenCaptureDisabled": true,
  "adjustVolumeDisabled" :  true
}

И экземпляр тела политики создан:

public static Google.Apis.AndroidManagement.v1.Data.Policy body = new Google.Apis.AndroidManagement.v1.Data.Policy();

Json загружается отлично, но application policy lists невозможно сохранить в ApplicationPolicy из-за преобразования типов.

{
    var appPolicy = JsonConvert.DeserializeObject<Rootobject>(File.ReadAllText(applicationPolicyJson));

    policyBody.CameraDisabled = appPolicy.CameraDisabled;
    policyBody.ScreenCaptureDisabled = appPolicy.ScreenCaptureDisabled;
    policyBody.AdjustVolumeDisabled = appPolicy.AdjustVolumeDisabled;

    policyBody.Applications = new List<ApplicationPolicy> {***appPolicy*** };
}


public class Rootobject
{
   public Application[] Applications { get; set; }
   public bool CameraDisabled { get; set; }
   public bool ScreenCaptureDisabled { get; set; }
   public bool AdjustVolumeDisabled { get; set; }
}
public class Application
{
   public string PackageName { get; set; }
   public string InstallType { get; set; }
   public bool LockTaskAllowed { get; set; }
   public string DefaultPermissionPolicy { get; set; }
}

Как мне этого добиться?

Спасибо!

1 Ответ

0 голосов
/ 05 апреля 2019

Когда вы используете библиотеку C #, вы не можете "загрузить" JSON напрямую, метод Patch принимает объект Policy , который необходимо построить с использованием семантики C #. То же самое для Java. С другой стороны, библиотека Python использует словарь, который легко генерировать из JSON.

Для C # это будет выглядеть так:

using Google.Apis.AndroidManagement.v1.Data;

var policy = new Policy();

policy.CameraDisabled = true;
policy.ScreenCaptureDisabled = true;
policy.AdjustVolumeDisabled = true;

var app1 = new ApplicationPolicy();
app.PackageName = "com.android.chrome";
app.InstallType = "FORCE_INSTALLED";
app.LockTaskAllowed = true;
app.DefaultPermissionPolicy = "GRANT";

var app2 = new ApplicationPolicy();
app.PackageName = "com.example";
app.InstallType = "FORCE_INSTALLED";

policy.Applications = new List<ApplicationPolicy> {app1, app2};

Отказ от ответственности: я не привык к C #, поэтому возможно, что этот код не компилируется, но, надеюсь, это даст вам идею.

...