当前位置: 首页 > 知识库问答 >
问题:

当设置了所有者设备应用程序时,为什么我不能创建受限制的配置文件?

江阳冰
2023-03-14

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

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

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


问题的第二部分是:如何使用现有的DevicePolicyManager API(据我所知,没有公共API来创建受限配置文件),以编程方式创建受限配置文件或等效行为?

更新:我做了一个示例应用来说明这一点。在GitHub上有。

再现的步骤:

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

共有1个答案

邹玮
2023-03-14

受限配置文件不适用于具有设备所有者的平板电脑或电话。它显示在设置应用程序源代码中:

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

所以这不是一个bug,而是一个功能。禁用它可能是为了避免干扰设备所有者的应用程序。你应该意识到这一点,因为你有更多的权力与你的设备所有者应用程序,意味着你将不得不限制你的用户自己从这个设备所有者应用程序。

为此,您可以使用通过DevicePolicyManager.AddUserRestriction()DevicePolicyManager.SetGlobalSetting()DevicePolicyManager.SetSecureRetting()提供的所有限制API来配置设置,还可以使用DevicePolicyManager.SetApplicationHidded()来限制用户对应用程序的访问。

 类似资料:
  • 当我查看DevicePolicyManager https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html时,我发现了EXTRA_PROVISIONING_LOCAL_TIME,我使用这个常量的查询可以根据设备所有者规范设置时间,比如5月19,2013 15:20或者根据公司服务器时间设置时间

  • 是否有其他方法启用它?

  • 你可以查看或更改 Navicat Monitor 的应用程序设置,例如端口、网站网址和 IP 地址。若要配置应用程序设置,请前往“配置”->“应用程序设置”。 这里列出了 Navicat Monitor 的应用程序设置。你可以编辑以下设置: 端口 Navicat Monitor 将侦听的端口号。 网站网址 将用于警报电子邮件内的 Navicat Monitor 网站网址。 IP 地址 如果机器已被

  • 看这个教程,很清楚的介绍了iOS证书申请流程http://kxdang.com/topic/appuploader/certification.html

  • 有没有人知道通过Google Play发布的设备拥有者应用程序在发生更新时的生产行为? 正如我们所知,安装一个设备拥有者应用程序需要一些动机,而且并不容易:重置为出厂默认,然后为设备提供NFC--第二个设备等等……所以,即使我们认为这一步已经完成,任何进一步的更新是否每次都需要如此多的痛苦? 出现此问题是因为在我的开发设备上,如果之前安装了设备所有者应用程序,我无法重新启动该应用程序的更改…除非我

  • 我正在开发一个iOS应用程序,在应用程序的设置内,我将允许用户有亮或暗模式。这款应用在默认情况下会是浅色模式,但如果用户将其改成暗色模式,它就会改变标签/背景/按钮等。 我计划通过将亮或暗模式存储在共享默认值中来实现这一点,当页面加载时,我将检查这一点。 如果是dark模式,我知道我可以在ViewDidLoad()中根据需要更改颜色,但这似乎是太多的工作。我这里有我需要的一套颜色: 我知道我可以把