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 umożliwić obsługę tej funkcji, producenci OEM muszą zaktualizować swoje USB HAL i korzystać z dodanej obsługi interfejsów API menedżera zasad dotyczących urządzeń.
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 interfejsu APIenableUsbDataSignal
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 włączono sygnalizację danych USB.- Jest to konieczne, aby sprawdzić, czy wyświetla się okno zasad przejrzystości. Użytkownicy systemu mogą wywołać ukryty wariant tego konkretnego 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.
Przykład implementacji menedżera zasad dotyczących urządzeń
Poniższy przykład ilustruje, jak wdrożyć Menedżera zasad dotyczących 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ą zmienić ustawienia USB i tetheringu, gdy tylko podłączysz kabel USB. Aby otworzyć ekran ustawień USB:
- Wybierz Ustawienia.
- Kliknij Połączone urządzenia.
- Kliknij 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 sygnalizowanie 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, w opcjach dla deweloperów zostaną wyłączone debugowanie USB, domyślne konfiguracje USB i ustawienia kierowania dźwięku USB.