W Androidzie 12 administratorzy IT mogą wyłączyć sygnalizację danych przez USB na urządzeniach należących do firmy (z wyjątkiem funkcji ładowania). Aby obsługiwać tę funkcję, producenci OEM muszą zaktualizować warstwę HAL USB i skorzystać 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łączanie 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 włączanie i wyłączanie sygnału danych USB jest obsługiwane na urządzeniu.isUsbDataSignalingEnabled()
to interfejs API, który sprawdza, czy sygnał danych z urządzenia USB został włączony.- Jest to wymagane, aby sprawdzić, czy wyświetlane jest okno dialogowe dotyczące przejrzystości zasad. Użytkownicy systemu mogą wywoływać ukryty wariant tego interfejsu API, który może być wywoływany przez użytkownika systemu w celu sprawdzenia, czy sygnalizacja danych USB została włączona dla danego użytkownika.
- Wybierz Ustawienia.
- Kliknij Połączone urządzenia.
- Kliknij USB.
Przykład implementacji menedżera zasad dotyczących urządzeń
Poniżej znajdziesz przykład implementacji 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ą modyfikować ustawienia preferencji USB i tetheringu od razu po podłączeniu USB. Aby otworzyć ekran ustawień USB:
Uwaga: jeśli USB nie jest podłączony, nie można zmienić ustawień USB i nie będą one widoczne w oknie Połą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ć ustawień USB. Zamiast tego wszystkie ustawienia USB w Ustawieniach są całkowicie wyłączone, co spowoduje wyświetlenie okna dialogowego dotyczącego przejrzystości zasad.
Uwaga: jeśli sygnał danych USB jest wyłączony, debugowanie USB, domyślne konfiguracje USB i ustawienia routingu dźwięku USB zostaną wyłączone w opcjach programisty.