我已经实现了一个设备管理员应用程序,它根据某些必要条件(服务器端逻辑)等禁用摄像头等。
devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
devicePolicyAdmin = new ComponentName(this, MyDevicePolicyReceiver.class);
devicePolicyManager.setCameraDisabled(devicePolicyAdmin, true);
一切都按预期工作。但是,用户可以通过简单地在支持多用户的电话模型中切换用户配置文件(例如切换到 guest 帐户)来规避限制。该帐户中的设备管理员列表也不会反射(reflect)该应用程序。根据公司政策,这被视为安全漏洞。
我想知道是否:
- 有没有具体的代码可以安装设备管理员 全局?
- 有什么方法可以防止多用户 以编程方式无需生根?
- 有什么方法可以 防止切换用户或检测用户切换等 发生了,1 或 2 应该是不可能的吗?
任何其他建议也将不胜感激。
最佳答案
(1) 根据我的研究,不可能创建一个对设备上的所有帐户都具有管理员访问权限的设备管理员。该线程中的评论/答案得出了相同的结论:https://android.stackexchange.com/q/138417
(2/3) 查看 DPM API 似乎无法阻止用户切换或创建新帐户或监听帐户切换。通过将 build.prop
修改为 fw.max_users=1
使您的设备生根,可以防止用户切换或创建新帐户,请参阅:https://android.stackexchange.com/a/119632
和 https://www.reddit.com/r/Android/comments/323l36/android_5x_how_to_disable_guest_additional_user/
如果您因为时间/维护/安全问题而反对生根设备,我建议您查看移动设备管理工具。上面的评论提到了 Samsung Knox,它可以让您通过他们的 MultiUserManager 禁用设备上的多个用户。 .
您还可以使用 Mason通过关闭多用户来锁定您的设备/应用程序,防止用户下拉状态栏或访问设置,或将您的应用程序锁定在信息亭模式。
如果这听起来对您有用,请随时与我联系:trevor @ bymason.com
免责声明:我为 Mason 工作
关于Android 设备管理员 - 禁用未应用于(多用户) guest 帐户的相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37872706/