繁体   English   中英

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

[英]Why can't I create a restricted profile when an owner device app is set?

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

第一种情况未设置我的设备所有者应用。
设置>用户 :我可以“添加用户或配置文件” ,然后在用户受限制的配置文件之间进行选择。

在此输入图像描述

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

在此输入图像描述

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

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

重现的步骤

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

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

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()来限制用户的应用程序访问。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM