USB를 통한 데이터 신호 사용 중지

Android 12에서는 IT 관리자가 회사 소유 기기에서 USB를 통한 데이터 신호를 사용 중지하는 기능이 추가되었습니다(충전 기능 제외). 이 기능을 지원하려면 OEM은 USB HAL을 업데이트하고 추가된 기기 정책 관리자 API 지원을 활용해야 합니다.

기기 정책 관리자

USB를 통한 신호 사용 중지를 지원하기 위해 다음 세 가지 공개 API가 DevicePolicyManager에 포함되어 있습니다.

  • setUsbDataSignalingEnabled(boolean enabled)UsbManager에서 enableUsbDataSignal API를 호출하여 USB 데이터 신호를 사용 설정하거나 사용 중지하는 API입니다.
  • canUsbDataSignalingBeDisabled()는 USB 데이터 신호 사용 설정 또는 사용 중지가 기기에서 지원되는지 확인하는 API입니다.
  • isUsbDataSignalingEnabled()는 USB 데이터 신호가 사용 설정되었는지 확인하는 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 환경설정 화면에 액세스하려면 다음을 실행하세요.

    1. 설정을 탭합니다.
    2. 연결된 기기를 탭합니다.
    3. USB를 탭합니다.

    참고: USB가 연결되어 있지 않으면 USB 환경설정을 수정할 수 없고 환경설정이 연결된 기기 창에 표시되지 않습니다.

    IT 관리자가 회사 소유 기기에서 USB 데이터 신호를 사용 중지하면 사용자는 USB 환경설정을 수정할 수 없습니다. 대신 설정의 모든 USB 환경설정이 완전히 사용 중지되어 정책 투명성 대화상자 창이 만들어집니다.

    참고: USB 데이터 신호가 사용 중지되면 USB 디버깅과 기본 USB 구성, USB 오디오 라우팅 환경설정이 모두 개발자 옵션에서 사용 중지됩니다.