关于Android EMM的权限

问题描述

我正在申请emm。此应用程序仅将安装在公司的设备中。有什么方法可以通过 DevicePolicyManager 以编程方式授予以下权限。

  1. android.permission.SYstem_ALERT_WINDOW(通过其他应用显示
  2. android.permission.BIND_ACCESSIBILITY_SERVICE(无障碍服务)
  3. android.permission.REQUEST_IGnorE_BATTERY_OPTIMIZATIONS(忽略电池优化)

我想通过 DevicePolicyManager 授予上述权限,因为我的应用是系统所有者应用。但是,我无法通过 devicePolicyManager.setPermissionGrantState 授予它们。正如我还尝试过 devicePolicyManager.setPermittedAccessibilityServices 通过编程方式授予 ACCESSIBILY_SERVICE 一样,但这也不起作用。因此,有什么方法可以让我以编程方式授予所有权限,而无需导航到该屏幕并手动打开。或者是否有一种方法使用户无论如何都无法禁用上述功能。就像我通过 DevicePolicyManager 启用位置和其他权限时,用户无法将其关闭

解决方法

所以查看:https://developers.google.com/android/work/requirements#4.2.-runtime-permission-grant-state-management_1

https://developers.google.com/android/management/reference/rest/v1/enterprises.policies#permissionpolicy

似乎指示您可以创建一个将自动授予权限的策略。

我确实看到了: PERMISSION_POLICY_AUTO_GRANT

权限策略,始终向运行时权限授予新的权限请求。已经授予或拒绝的权限不受此影响。

PERMISSION_GRANT_STATE_GRANTED

运行时权限状态:将权限授予应用程序,并且用户无法通过UI管理权限。

听起来像您想要的。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...