Wyłącz sygnalizację danych przez USB

W systemie Android 12 dodano możliwość wyłączania przez administratorów IT sygnalizacji danych przez USB na urządzeniach firmowych (z wyjątkiem funkcji ładowania). Aby obsługiwać tę funkcję, producenci OEM muszą zaktualizować swoją USB HAL i skorzystać z dodatkowej obsługi interfejsów API Menedżera zasad urządzeń.

Menedżer zasad urządzeń

Aby obsługiwać wyłączanie sygnalizacji przez USB, w DevicePolicyManager znajdują się następujące trzy publiczne interfejsy API:

  • setUsbDataSignalingEnabled(boolean enabled) to interfejs API, który włącza lub wyłącza sygnalizację danych USB poprzez wywołanie interfejsu API enableUsbDataSignal w UsbManager .
  • canUsbDataSignalingBeDisabled() to interfejs API sprawdzający, czy urządzenie obsługuje włączanie lub wyłączanie sygnalizacji danych USB.
  • isUsbDataSignalingEnabled() to API sprawdzające, czy została włączona sygnalizacja danych USB.
    • Jest to wymagane, aby sprawdzić, czy wyświetlane jest okno dialogowe przejrzystości zasad. Użytkownicy systemu mogą wywołać ukryty wariant tego konkretnego API, który może zostać wywołany przez użytkownika systemu w celu sprawdzenia, czy dla konkretnego użytkownika została włączona sygnalizacja danych USB.
  • Przykład wdrożenia Menedżera zasad urządzeń

    Poniżej znajduje się przykład implementacji Menedżera zasad urządzeń.
    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();

    Ustawienia

    Użytkownicy mogą modyfikować preferencje USB i ustawienia tetheringu zaraz po podłączeniu USB. Aby uzyskać dostęp do ekranu preferencji USB, wykonaj następujące czynności:

    1. Kliknij Ustawienia.
    2. Kliknij Podłączone urządzenia.
    3. Kliknij USB.

    Uwaga: jeśli USB nie jest podłączone, preferencji USB nie można modyfikować i nie będą one wyświetlane w oknie Podłączone urządzenia.

    Jeśli administrator IT wyłączy sygnalizację danych USB na urządzeniu należącym do firmy, użytkownik nie będzie mógł modyfikować swoich preferencji USB. Zamiast tego wszystkie preferencje USB w Ustawieniach są całkowicie wyłączone, co spowoduje utworzenie okna dialogowego przejrzystości zasad.

    Uwaga: jeśli sygnalizacja danych USB jest wyłączona, debugowanie USB, domyślne konfiguracje USB i preferencje routingu audio USB zostaną wyłączone w opcjach programisty.