为什么在设置所有者设备应用时无法创建受限制的个人资料?

时间:2015-01-13 20:34:16

标签: android android-5.0-lollipop device-policy-manager device-owner

我最近注意到,当设置设备所有者应用时,无法创建受限制的配置文件。

第一种情况:未设置我的设备所有者应用
设置>用户:我可以“添加用户或个人资料”,然后选择用户受限制的个人资料

enter image description here

第二种情况:当我的设备所有者应用设置时 从设置>用户:我只能“添加用户”,然后我会收到确认以创建新用户。在第二种情况下,无法创建受限制的配置文件。

enter image description here

我想知道为什么在这种情况下它不可用以及在这种情况下我怎么可能创建受限制的配置文件?
我的问题的第二部分是:如何使用现有的DevicePolicyManager API以编程方式创建受限制的配置文件或等效行为(据我所知,没有公共API来创建受限制的配置文件)?

更新 我做了一个示例应用来说明这一点。它可以在Github上找到。

重现的步骤

  • 编译应用
  • 将应用程序上传到您的设备
  • 使用dpm命令行工具将应用程序设置为设备所有者:adb shell dpm set-device-owner com.mytest.minimalistdeviceowner/.DeviceAdminRcvr
  • 检查设置>用户
  • 中是否无法创建个人资料
  • 通过在应用程序中单击“取消设备所有者”,将应用程序设置为设备所有者。
  • 检查设置>用户
  • 中的创建现在是否可用

2 个答案:

答案 0 :(得分: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);
}

这不是一个错误,而是一个功能。可能已停用以避免干扰您的设备所有者应用。 您应该了解这一点,并且因为您的设备所有者应用程序拥有更强大的功能,这意味着您必须自己从此设备所有者应用程序中限制您的用户。

为此,您可以使用通过DevicePolicyManager.addUserRestriction()DevicePolicyManager.setGlobalSetting()DevicePolicyManager.setSecureSetting()提供的所有限制API来配置设置,还可以DevicePolicyManager.setApplicationHidden()限制用户对应用程序的访问权限

答案 1 :(得分:0)

  

为什么我无法在所有者设备应用中创建受限制的个人资料   设置?

可能是因为设备所有者应用已经管理了配置文件。我想在不绕过设备所有者应用限制的情况下更容易做到这一点。

  

如何以编程方式创建受限制的个人资料?

方法DevicePolicyManager.createAndInitializeUser()可用于创建托管个人资料。此配置文件无法在设置中直接管理,但设备所有者应用可以访问几乎相同的功能。

我找不到的一项功能是分享应用程序从所有者资料到受管理资源的功能。