W Androidzie 12 dodano możliwość wyłączenia sygnalizacji danych przez USB na urządzeniach należących do firmy (z wyjątkiem funkcji ładowania). Aby obsługiwać tę funkcję, producenci OEM muszą zaktualizować interfejs HAL USB i wykorzystać dodatkową obsługę interfejsów API Device Policy Manager.
Menedżer zasad dotyczących urządzeń
Aby umożliwić wyłączenie sygnalizacji przez USB, w DevicePolicyManager
uwzględniono te 3 publiczne interfejsy API:
setUsbDataSignalingEnabled(boolean enabled)
to interfejs API, który włącza lub wyłącza sygnalizację danych USB przez wywołanie interfejsuenableUsbDataSignal
wUsbManager
.canUsbDataSignalingBeDisabled()
to interfejs API, który sprawdza, czy na urządzeniu jest obsługiwane włączanie lub wyłączanie sygnalizacji danych USB.isUsbDataSignalingEnabled()
to interfejs API, który sprawdza, czy sygnalizacja danych USB została włączona.- Jest to konieczne, aby sprawdzić, czy wyświetla się okno zasad przejrzystości. Użytkownicy systemu mogą wywołać ukryty wariant tego interfejsu API, który może być wywoływany przez użytkownika systemu w celu sprawdzenia, czy dla danego użytkownika włączone jest sygnalizowanie danych przez USB.
- Wybierz Ustawienia.
- Kliknij Połączone urządzenia.
- Kliknij USB.
Przykład wdrożenia menedżera zasad dotyczących urządzeń
Poniżej przedstawiamy przykład implementacji Menedżera zasad urządzenia.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ą zmienić ustawienia USB i tetheringu, gdy tylko podłączysz kabel USB. Aby otworzyć ekran ustawień USB:
Uwaga: jeśli urządzenie USB nie jest podłączone, nie można modyfikować ustawień USB, a ustawienia te nie będą widoczne w oknie Urządzenia połączone.
Jeśli administrator IT wyłączy sygnalizację danych USB na urządzeniu należącym do firmy, użytkownik nie będzie mógł zmienić ustawień USB. Zamiast tego wszystkie ustawienia USB w sekcji Ustawienia są całkowicie wyłączone, co spowoduje wyświetlenie okna z informacjami o zasadach.
Uwaga: jeśli sygnalizacja danych USB jest wyłączona, opcje debugowania USB, domyślne konfiguracje USB i ustawienia kierowania dźwięku USB będą wyłączone w opcjach dla deweloperów.