3

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

第一种情况:当我的设备所有者应用程序未设置时。
Settings>Users:我可以"Add user or Profile",然后在UserRestricted Profile之间进行选择。

在此处输入图像描述

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

在此处输入图像描述

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

更新: 我制作了一个示例应用程序来说明这一点。它在Github上可用。

重现步骤

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

2 回答 2

3

受限配置文件不适用于拥有设备所有者的平板电脑或手机。它显示在此处提供的设置应用程序源代码中:

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);
}

所以这不是一个错误,而是一个功能。它可能已禁用以避免干扰您的Device Owner App。您应该意识到这一点,并且因为您对您的设备所有者应用程序拥有更多权力,这意味着您必须自己限制您的用户使用此设备所有者应用程序。

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

于 2015-01-16T16:12:33.783 回答
0

为什么在设置所有者设备应用时无法创建受限配置文件?

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

如何以编程方式创建受限配置文件?

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

我找不到的一项功能是能够将应用程序从所有者配置文件共享到托管应用程序

于 2015-01-19T21:51:23.227 回答