9

Lollipop API 提供了 2 个新功能“配置文件所有者”和“设备所有者”(http://developer.android.com/about/versions/android-5.0.html#Enterprise)。在它们之间,它们只提供了我需要的应用程序功能,父母可以使用它来控制孩子的设备活动。每个的设置流程是:

设备所有者

在设备设置期间,您可以使用 NFC 告诉 Android 您希望您的应用成为设备所有者。然后,Android 从 URL 下载应用程序,设备被加密并以设备所有者的身份使用应用程序进行配置。因此,对于从 Google Play 安装我的应用程序的人,我需要该应用程序提示他们将设备恢复出厂设置,然后在另一台设备上安装另一个应用程序,然后 NFC 将它们碰撞在一起。随着设置流程的进行,这远非理想。但是一旦设置完成,设备所有者 API 就会为此用例提供非常丰富的功能集。

个人资料所有者

对此的设置更加直接:用户从 Google Play 安装应用程序,然后可以提示授予应用程序配置文件所有者权限。如果用户同意,设备将由 Android 加密,并且在重新启动后,设备有 2 个使用相同启动器(主屏幕)的“共同存在”配置文件。设置可能更直接,但最终结果并不是我真正需要的,因为该应用程序只能控制托管配置文件下的应用程序。

问题

所以我想我实际上有两个问题:是否可以制作一个控制整个用户个人资料的个人资料所有者应用程序,即不是共同存在的托管个人资料?或者是否可以使用更简单的设置流程制作设备所有者应用程序,不需要恢复出厂设置和 NFC 碰撞(不能生根)?这两种方法之间的一些中间立场将是理想的。

4

3 回答 3

3

答案(1):托管配置文件作为单独的角色工作,配置文件下的所有应用程序都是不同的(它们是不同的独立应用程序实例),类似于新用户。配置文件所有者是托管配置文件的所有者应用程序,因此与设备所有者相比,它没有太多的权力和功能,因此它无法控制整个用户配置文件。

答案 (2):要创建设备所有者,必须使用 NFC 方法,因为一旦您的设备设置完成,它就会被配置,之后您无法将您的应用设置为设备所有者(除非您使用生根方法)。您可以按照给定的链接设置设备所有者

1)使用 NFC 创建设备所有者

2)生根

于 2014-12-12T10:55:05.207 回答
1

是否可以制作一个控制整个用户个人资料的个人资料所有者应用程序,即不是共同存在的托管个人资料?

ACTION_PROVISION_MANAGED_PROFILE

配置文件所有者应用通过发送带有操作 DevicePolicyManager.ACTION_PROVISION_MANAGED_PROFILE 的意图来创建托管配置文件。(资源。)

让我们打开DevicePolicyManager.java

ACTION_PROVISION_MANAGED_PROFILE 的 Javadoc 注释说:

/**
 * ... Starts the provisioning flow which sets up a managed profile.
 * ...
 * ... The user which provisioning is started from and
 * the managed profile share a launcher. ...
 */

所以 ACTION_PROVISION_MANAGED_PROFILE 可能无助于做你想做的事。

嗯。

ACTION_PROVISION_MANAGED_USER

该文件中唯一看起来可能有帮助的其他操作是 ACTION_PROVISION_MANAGED_USER。

让我们看一下Javadoc 注释。它说:

/**
 * ... Starts the provisioning flow which sets up a managed user.
 * ...
 * This intent will typically be sent by a mobile device management application (MDM).
 * Provisioning configures the user as managed user and sets the MDM as the profile
 * owner who has full control over the user.

伟大的!有什么问题?

 * ... Provisioning can only happen before user setup has
 * been completed. ...
 */

哦。:(因此,如果您的设备没有植根,我认为您必须在恢复出厂设置后和设置向导完成之前以某种方式安装您的个人资料所有者应用程序。

边注

我查看了某个白皮书的第 13 页。它说:“在托管配置过程中,称为 ACTION_PROVISION_MANAGED_PROFILE 的意图被调用。如果用户有一个预先存在的个人帐户,则托管配置文件是独立的,但同时存在。” 在我看来,这似乎意味着,如果您在没有用户帐户的设备上调用 ACTION_PROVISION_MANAGED_PROFILE,您的应用程序可能会控制整个用户配置文件。但同样,我想您必须在恢复出厂设置后以及设置向导完成之前以某种方式安装您的个人资料所有者应用程序。

做你想做的

我认为你想要的很遗憾是不可能的。如果您愿意,您可以向 Android 提出功能请求,并要求他们使之成为可能。如果您这样做,请在下方留下评论,并附上功能请求的 URL。如果您没有足够的声誉点来发表评论,请发送电子邮件tealhillgmail.com并让我代表您发表评论。

一种解决方法

我推测一个可能的解决方法可能是让您的应用程序下载并启动一个植根于手机的第三方应用程序。大多数手机都是可root的。一旦手机被植根,您的应用程序就可以成为设备所有者。之后,也许您的应用程序可以取消手机的根目录并仍然是设备所有者。或者可能不是。我不知道。

如果您的应用程序无法取消手机的root 权限,或者没有尝试,手机将永远保持root 状态。这可能是一个安全风险。您可能应该警告用户。

于 2017-03-23T18:24:41.170 回答
0

正确地说,设备上只能有 1 个设备所有者,但设备上可以有多个配置文件所有者。每个配置文件所有者将对 1 个用户有效。

这可以通过调用 DevicePolicyManager 中的 createAndInitializeUser api 来实现。

http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#createAndInitializeUser%28android.content.ComponentName,%20java.lang.String,%20java.lang.String,%20android.content.ComponentName ,%20android.os.Bundle%29

我能够创建多个个人资料所有者,但仍在努力找出是否有办法让设备所有者与个人资料所有者交谈。

于 2015-01-22T11:36:15.353 回答