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

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

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

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

  • setUsbDataSignalingEnabled(boolean enabled) — это API, который включает или отключает передачу сигналов USB-данных путем вызова API enableUsbDataSignal в UsbManager .
  • canUsbDataSignalingBeDisabled() — это API, который проверяет, поддерживается ли на устройстве включение или выключение передачи сигналов USB-данных.
  • isUsbDataSignalingEnabled() — это API, который проверяет, включена ли передача данных по USB.
    • Это необходимо для проверки того, отображается ли диалоговое окно прозрачности политики. Системные пользователи могут вызвать скрытый вариант этого API, который может быть вызван системным пользователем для проверки того, включена ли передача данных по USB для конкретного пользователя.
  • Пример реализации Device Policy Manager

    Ниже приведен пример реализации диспетчера политик устройств.
    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 будут отключены в параметрах разработчика.