Отключить передачу данных через 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 для конкретного пользователя.
  • Пример реализации диспетчера политик устройств

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