Отключить передачу данных через USB

В Android 12 добавлена ​​возможность для ИТ-администраторов отключать передачу данных по USB на корпоративных устройствах (за исключением функции зарядки). Для поддержки этой функции производителям оборудования необходимо обновить свой USB HAL и использовать добавленную поддержку API Device Policy Manager.

Диспетчер политик устройств

Для поддержки отключения передачи сигналов по USB в DevicePolicyManager включены следующие три общедоступных API:

  • Функция setUsbDataSignalingEnabled(boolean enabled) позволяет включать или отключать передачу данных по USB путем вызова функции ` enableUsbDataSignal в UsbManager .
  • Функция canUsbDataSignalingBeDisabled() — это API-функция, которая проверяет, поддерживается ли на устройстве включение или отключение передачи данных по USB.
  • Функция isUsbDataSignalingEnabled() — это API-функция, которая проверяет, включена ли передача данных по USB.
    • Это необходимо для проверки того, отображается ли диалоговое окно прозрачности политики. Пользователи системы могут вызвать скрытый вариант этого 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 выполните следующие действия:

    1. Нажмите «Настройки».
    2. Нажмите «Подключенные устройства».
    3. Нажмите USB.

    Примечание: Если USB-порт не подключен, параметры USB изменить невозможно, и они не будут отображаться в окне «Подключенные устройства».

    Если ИТ-администратор отключит передачу данных по USB на корпоративном устройстве, пользователь не сможет изменить свои настройки USB. Вместо этого все настройки USB в разделе «Параметры» будут полностью отключены, что приведет к появлению диалогового окна прозрачности политики.

    Примечание: Если передача данных по USB отключена, отладка по USB, конфигурации USB по умолчанию и параметры маршрутизации звука по USB будут отключены в параметрах разработчика.