Joe*_*Joe 5 android android-for-work
我所需要的感觉相当简单,但令人沮丧的是Android for Work API 似乎没有提供开箱即用的功能。
我正在尝试创建一个Android DPC应用程序来拥有和管理工作配置文件。(不是设备所有者)。当您配置工作配置文件时,您将获得应用程序的两个实例。一个带有标记,在工作配置文件下运行,另一个未标记,在主要配置文件下运行。

我试图找出三件事:
原因是,即使在 Google 自己的示例应用程序中(参见图片),即使已经存在工作配置文件并且该应用程序实际上是所有者,它也不会尝试建立此设置并启动配置!
设备上是否已配置工作配置文件?
如果是这样,是我的应用程序拥有该配置文件吗?如果不是哪个应用程序可以?
该代码在主用户下运行时将起作用。主要用户的配置文件所有者将是工作配置文件。如果您的应用程序拥有它,它将记录您自己的包。
DevicePolicyManager manager =
(DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
List<ComponentName> activeAdmins = manager.getActiveAdmins();
if (activeAdmins != null){
for (ComponentName admin : activeAdmins){
String packageName = admin.getPackageName();
if (manager.isProfileOwnerApp(packageName)){
Log.d(TAG, "Work Profile is: " + packageName);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您只想检查您的应用程序是否是应用程序中的配置文件所有者,请使用此选项。
manager.isProfileOwnerApp(getApplicationContext().getPackage());
Run Code Online (Sandbox Code Playgroud)
工作资料是否处于活动状态?
如果 isProfileOwnerApp() 对于主用户下的任何包返回 true,则工作配置文件处于活动状态并归该包所有。
还可以在支持多用户的设备上为辅助用户配置配置文件所有者,但我还没有看到 EMM 实现这一点。设备所有者需要将您的包的组件分配为辅助用户的配置文件所有者,因此可以肯定地说这种情况不会发生。但如果是这样,您的应用程序应该像工作配置文件一样工作,但在辅助用户的上下文中作为托管配置文件。
* 编辑 (6/15/18) *:
我在 Android O 设备上测试了您的场景,但没有得到相同的行为。从 TestDPC 配置工作配置文件后,TestDPC 检测到已配置托管配置文件,并且不允许我再次配置。
您正在使用哪个版本的 Android 进行开发?
我深入研究了 TestDPC 并找到了一些针对您的场景进行修改的代码,这可能会对您有所帮助。不幸的是,对于 Android M 及更低版本,TestDPC 不会检测到设备已配置工作配置文件,而只会再次尝试。此外,我没有找到一种方法来检测个人资料所有者是谁、您的应用程序还是其他应用程序。但我希望这有帮助!
/**
* @param context Calling activity's context
* @return true, if work profile provisioning is allowed
*/
@TargetApi(Build.VERSION_CODES.N)
public static boolean isProvisioningAllowed(Context context) {
if (BuildCompat.isAtLeastN()) {
DevicePolicyManager dpm = (DevicePolicyManager) context
.getSystemService(Context.DEVICE_POLICY_SERVICE);
return dpm.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE);
}
else {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4418 次 |
| 最近记录: |