Android 12 添加了一项功能,可供 IT 管理员停用公司自有设备上的 USB 数据信号传输(充电功能除外)。为了支持此功能,OEM 必须更新其 USB HAL,并利用新增的设备政策管理器 API 支持。
设备政策管理器
为了支持停用 USB 信号传输,DevicePolicyManager
中包含以下三个公共 API:
setUsbDataSignalingEnabled(boolean enabled)
是通过调用UsbManager
中的enableUsbDataSignal
API 来启用或停用 USB 数据信号传输的 API。canUsbDataSignalingBeDisabled()
是用于检查设备是否支持启用或停用 USB 数据信号传输的 API。isUsbDataSignalingEnabled()
是用于检查是否已启用 USB 数据信号传输的 API。- 这是检查系统是否显示政策透明度对话框窗口所必需的 API。系统用户可以调用此特定 API 的一个隐藏变体。通过调用该变体,系统用户可以检查是否已为特定用户启用 USB 数据信号传输。
设备政策管理器实现示例
以下示例展示了如何实现设备政策管理器。class android.app.admin.DevicePolicyManager { /** * Called by device owner or profile owner of an organization-owned managed profile to * enable or disable USB data signaling for the device. When disabled, USB data connections * (except from charging functions) are prohibited. * * <p> This API is not supported on all devices, the caller should call * {@link #canUsbDataSignalingBeDisabled()} to check whether enabling or disabling USB data * signaling is supported on the device. * * @param enabled whether USB data signaling should be enabled or not. * @throws SecurityException if the caller is not a device owner or a profile owner on * an organization-owned managed profile. * @throws IllegalStateException if disabling USB data signaling is not supported or * if USB data signaling fails to be enabled/disabled. */ public void setUsbDataSignalingEnabled(boolean enabled);
/** * Called by device owner or profile owner of an organization-owned managed profile to return * whether USB data signaling is currently enabled by the admin. * * @return {@code true} if USB data signaling is enabled, {@code false} otherwise. */ public boolean isUsbDataSignalingEnabled();
/** * Called by the system to check whether USB data signaling is currently enabled for this user. * * @param userId which user to check for. * @return {@code true} if USB data signaling is enabled, {@code false} otherwise. * @hide */ public boolean isUsbDataSignalingEnabledForUser(@UserIdInt int userId);
/** * Returns whether enabling or disabling USB data signaling is supported on the device. * * @return {@code true} if the device supports enabling and disabling USB data signaling. */ public boolean canUsbDataSignalingBeDisabled();
设置
连接 USB 后,用户可以立即修改 USB 偏好设置和网络共享设置。如需访问 USB 偏好设置屏幕,请执行以下操作:
- 点按设置。
- 点按已连接的设备。
- 点按 USB。
注意:如果未连接 USB,就无法修改 USB 偏好设置,而且 USB 偏好设置也不会显示在“已连接的设备”窗口中。
如果 IT 管理员在公司自有设备上停用了 USB 数据信号传输,用户便无法修改其 USB 偏好设置。相反,设置中的所有 USB 偏好设置都会完全停用,这种情况会导致创建一个政策透明度对话框窗口。
注意:如果停用 USB 数据信号传输,开发者选项中的 USB 调试、默认 USB 配置和 USB 音频路由偏好设置都会停用。