应用程序是否可以获取设备范围内活动和已安装设备管理员的列表?
DevicePolicyManager.getActiveAdmins() 能够获取活动(启用)设备管理员的列表,而 PackageManager.queryBroadcastReceivers() 能够获取已安装设备管理员的列表。但是,他们只能在自己的用户上下文中获取列表。在多用户环境中,他们无法获取设备范围的列表(在 Nexus 5 上的 Android M 上测试)。
我问是因为显然在三星 Knox 容器中,getActiveAdmins() 返回设备范围的列表(包括 MyKnox 代理),而 queryBroadcastReceivers() 返回容器内的列表(在 Galaxy S6 上的 Android L 和 Android M/N 上测试银河 S7)。
我了解 Knox 利用 Android 的多用户功能来实现容器,但显然 Android 的多用户容器和 Knox 容器之间存在一些行为差异。我希望能够从 Knox 容器中获取活动和已安装设备管理员的合法列表。现在我知道 MyKnox 代理处于活动状态(通过 getActiveAdmins())但尚未安装(通过 queryBroadcastReceivers())。这根本不符合逻辑。