3

Я недавно заметил, что, когда установлено приложение Device Owner, создать ограниченный профиль невозможно.Почему я не могу создать профиль с ограниченным доступом при установке приложения устройства владельца?

Первый случай: Когда мое устройство владельца устройства не установлено.
От Настройки> Пользователи: Я могу «Добавить пользователя или профиль», а затем выбрать между пользователя или Ограниченной Профиль.

enter image description here

Второй случай: Когда мое устройство владелец приложения установлен.
От Настройки> Пользователи: Я могу только «Добавить пользователя», а затем получить подтверждение для создания нового пользователя. В этом втором случае создать ограниченный профиль невозможно.

enter image description here

Я хотел бы знать, почему он не доступен в этом случае и как я мог бы создать ограниченный профиль в этом случае?
Вторая часть моего вопроса: как я могу программно создать ограниченный профиль - или эквивалентное поведение - используя существующий DevicePolicyManager API (насколько я вижу, нет открытого API для создания ограниченного профиля)?

ОБНОВЛЕНИЕ: Я сделал пример приложения, чтобы проиллюстрировать это. Он доступен на Github.

Действия по воспроизведению:

  • компиляции приложение
  • Загрузить приложение на устройство
  • Установите приложение в качестве владельца устройства с помощью инструмента командной строки пм: adb shell dpm set-device-owner com.mytest.minimalistdeviceowner/.DeviceAdminRcvr.
  • Убедитесь, что создание профиля недоступно в разделе «Настройки»> «Пользователи»
  • Отмените приложение как владельца устройства, нажав в приложении «Отменить владельца устройства».
  • Убедитесь, что создание теперь доступен в меню Настройки> Пользователи
+0

Я был ниспослан. Может быть, потому что не ясно, как это воспроизвести. Я добавил пример приложения на github и обновил вопрос, чтобы добавить шаги для воспроизведения этого поведения. –

ответ

3

Запрещенные профили не доступны для таблеток с владельцем устройства или телефоны. Это показано в настройках приложения исходного кода, доступного here:

DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(
       Context.DEVICE_POLICY_SERVICE); 
// No restricted profiles for tablets with a device owner, or phones. 
if (dpm.getDeviceOwner() != null || Utils.isVoiceCapable(context)) { 
    mCanAddRestrictedProfile = false; 
    mAddUser.setTitle(R.string.user_add_user_menu); 
} 

Так что это не ошибка, а functionnality. Вероятно, он отключен, чтобы не мешать вашему Device Owner App. Вы должны знать об этом и потому, что у вас больше возможностей с помощью приложения «Владелец устройства», вы должны будете ограничить пользователя самостоятельно от этого приложения Device Owner.

Чтобы сделать это, вы могли бы использовать все ограничения API, предоставляемую через DevicePolicyManager.addUserRestriction(), DevicePolicyManager.setGlobalSetting(), DevicePolicyManager.setSecureSetting() для настройки параметров, а также DevicePolicyManager.setApplicationHidden() для ограничения доступа приложений для вашего пользователя.

0

Почему я не могу создать профиль с ограниченным доступом, если установлено устройство владельца устройства ?

Возможно, потому что приложение владельца устройства уже управляет профилями. Думаю, было проще сделать это, не обойдя ограничения приложений для владельцев устройств.

Как я могу программно создать ограниченный профиль?

Метод DevicePolicyManager.createAndInitializeUser() может использоваться для создания управляемого профиля. Этот профиль не может управляться непосредственно в настройках, но приложение владельца устройства может получить доступ к почти тем же функциям.

Одна из возможностей, которую я не могу найти, это способность поделиться приложение от профиля владельца к управляемому.

+0

Сноска: Когда API 24 вышел, 'DevicePolicyManager.createAndInitializeUser()' был удален. Он был заменен на 'DevicePolicyManager.createAndManageUser()'. – unforgettableid