Области делегирования Android Management API не используются приложением Companion

Следуя справочнику по Android Management API, мы настроили наше приложение Android Companion, чтобы оно могло: включать системные приложения, скрывать и показывать пакеты.

Мы добавили в конфигурацию нашей политики следующую информацию:

{
  '
  '
  '
  "applications": [
    {
      "packageName": "com.domain.app",
      "installType": "REQUIRED_FOR_SETUP",
      "defaultPermissionPolicy": "GRANT",
      "delegatedScopes": [
        "ENABLE_SYSTEM_APP",
        "PACKAGE_ACCESS"
      ]
    }
  ],
  '
  '
  '
}

Затем в нашем приложении Android Companion мы добавили следующие строки кода в соответствии с документацией Google здесь и здесь:

DevicePolicyManager dpm = (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName admin = new ComponentName(mContext, DeviceAdminReceiver.class);

// Iterate through system application package names list
for (String packageName : systemAppsList) {
  if (packageName != null && !packageName.equals("")) {
    try {
      // Re-enable a system app that was disabled by default when the user was initialized
      dpm.enableSystemApp(admin, packageName);

      // Unhide a package (it could be any app : system, managed, etc...)
      dpm.setApplicationHidden(admin, packageName, false);
    } catch (SecurityException e) {
      e.printStackTrace();
      Log.e(TAG, e.getMessage());
    }
  }
}

Мы ожидаем, что средство запуска Android покажет включенные системные приложения, но Android перехватывает SecurityException и распечатывает следующий журнал ошибок:

Нет активного администратора ComponentInfo {com.domain.app/android.app.admin.DeviceAdminReceiver}

Вы хоть представляете, что может быть не так?


person Andrew Wizzard    schedule 02.05.2019    source источник
comment
Эй, я знаю, что это старый вопрос, но я хотел бы знать, как удалось установить ваше приложение в качестве администратора при использовании Android Managment API. Мы пытались проверить, является ли наше киоск-приложение владельцем устройства (кстати, мы можем смешивать концепции), но наше приложение - нет. Большое спасибо!   -  person pitazzo    schedule 30.10.2020


Ответы (1)


в вызове метода установите для параметра admin значение null, если вы используете делегированную область, как описано в Документация для Android

ComponentName: с каким DeviceAdminReceiver связан этот запрос, или null, если вызывающий является делегатом доступа к пакету. Это значение никогда не должно быть нулевым.

немного сбивает с толку, параметр администратора может быть установлен на null при использовании делегированной области и в то же время сразу после ... это значение никогда не должно быть нулевым, (Великий Google)

person issamux    schedule 17.05.2019
comment
lol Google, просто исправьте там ошибку документации ... Это значение может быть нулевым. - person issamux; 17.05.2019
comment
Спасибо @issamux! Я установил для параметра ComponentName значение null в обоих вызовах методов, и теперь он работает. И да, документация Google кажется мне немного запутанной и противоречивой по этому поводу. - person Andrew Wizzard; 20.05.2019
comment
Привет, @issamux, мне было интересно, не могли бы вы взглянуть на комментарий, который я только что добавил к вопросу. Если хотите, я могу задать новый вопрос и связать его - person pitazzo; 30.10.2020
comment
Привет @pitazzo ... да, пожалуйста, задайте новый вопрос и предоставьте контекст и код, чтобы мы могли вам помочь :) - person issamux; 01.11.2020
comment
Еще раз привет @issamux, мы только что разместили вопрос, надеюсь, он дает достаточно контекста. Пожалуйста, не стесняйтесь комментировать любые дальнейшие разъяснения. stackoverflow .com / questions / 64634738 /. - person pitazzo; 01.11.2020