13

设备所有者可以使用DevicePolicyManager.setPermissionGrantState()向第三方应用授予运行时权限,以避免用户提示。

但是设备所有者是否也有任何方法可以授予USB 权限,以便此应用无需用户提示即可访问插入的 USB 设备?

我尝试调用UsbManager.grantPermission()(通过反射),但它引发了 a SecurityException,因为它需要MANAGE_USB仅授予系统应用程序(而不是设备所有者,显然)的权限。

注意:我正在寻找一种适用于非 root 和非自定义 Android 系统的解决方案,设备所有者应用程序是使用Android Enterprise 配置方法设置的。

4

2 回答 2

3

有一个特殊的系统配置可以禁用 USB 权限对话框: https ://github.com/aosp-mirror/platform_frameworks_base/blob/8ff4a5a5b510e724b25ac00369696594bb0c9fdc/core/res/res/values/config.xml#L2283

也许您也可以在运行时使用 setprop 以 root 权限更改它。

另一种方法是自定义 UsbUserSettingsManager 类,具体是这个方法:https ://android.googlesource.com/platform/frameworks/base.git/+/master/services/usb/java/com/android/server/usb/UsbUserSettingsManager .java#178

我假设作为设备所有者,您可以完全控制您的 ROM 源代码。

于 2019-05-08T11:34:44.993 回答
1

它有点旧,但希望它有助于其他。我一直在使用它来授予应用程序权限

public boolean setPermissionGrantState (ComponentName admin, 
                String packageName, 
                String permission, 
                int grantState)

链接:https://developer.android.com/reference/android/app/admin/DevicePolicyManager#setPermissionGrantState(android.content.ComponentName,%20java.lang.String,%20java.lang.String,%20int)

于 2020-12-22T09:40:38.570 回答