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

В Android 12 системные администраторы могут отключать передачу данных по USB на корпоративных устройствах (кроме зарядки). Чтобы поддерживать эту функцию, производители оригинального оборудования должны обновить свой 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.