Android 12 agregó la capacidad para que los administradores de TI deshabiliten la señalización de datos a través de USB en dispositivos de propiedad corporativa (excepto la función de carga). Para admitir esta funcionalidad, los OEM deben actualizar su USB HAL y utilizar el soporte adicional para las API de Device Policy Manager.
Administrador de políticas de dispositivos
Para admitir la desactivación de la señalización a través de USB, se incluyen las siguientes tres API públicas en DevicePolicyManager
:
-
setUsbDataSignalingEnabled(boolean enabled)
es una API que habilita o deshabilita la señalización de datos USB llamando a la APIenableUsbDataSignal
enUsbManager
. -
canUsbDataSignalingBeDisabled()
es una API que comprueba si el dispositivo admite habilitar o deshabilitar la señalización de datos USB. -
isUsbDataSignalingEnabled()
es una API que comprueba si se ha habilitado la señalización de datos USB.- Esto es necesario para comprobar si se muestra o no una ventana de diálogo de transparencia de políticas. Los usuarios del sistema pueden llamar a una variante oculta para esta API en particular a la que el usuario del sistema puede llamar para verificar si la señalización de datos USB se ha habilitado para un usuario en particular.
Ejemplo de implementación del Administrador de políticas de dispositivos
El siguiente es un ejemplo de cómo implementar el Administrador de políticas de dispositivos.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();
Ajustes
Los usuarios pueden modificar las preferencias de USB y la configuración de anclaje a red tan pronto como se conecta el USB. Para acceder a la pantalla de preferencias de USB, haga lo siguiente:
- Toca Configuración.
- Toca Dispositivos conectados.
- Pulsa USB.
Nota: Si el USB no está conectado, las preferencias de USB no se pueden modificar y no aparecerán en la ventana Dispositivos conectados.
Si un administrador de TI desactiva la señalización de datos USB en un dispositivo de propiedad corporativa, el usuario no puede modificar sus preferencias de USB. En cambio, todas las preferencias de USB en Configuración están totalmente deshabilitadas, lo que creará una ventana de diálogo de transparencia de políticas.
Nota: Si la señalización de datos USB está deshabilitada, la depuración de USB, las configuraciones USB predeterminadas y las preferencias de enrutamiento de audio USB se deshabilitarán en las opciones de desarrollador.