Android 12 agregó la capacidad para que los administradores de TI inhabiliten la señalización de datos a través de USB en dispositivos propiedad de la empresa (excepto la función de carga). Para admitir esta funcionalidad, los OEMs deben actualizar su HAL de USB y usar la compatibilidad agregada con las APIs de Device Policy Manager.
Administrador de políticas de dispositivo
Para admitir la inhabilitación de la señalización a través de USB, se incluyen las siguientes tres APIs públicas en DevicePolicyManager
:
setUsbDataSignalingEnabled(boolean enabled)
es una API que habilita o inhabilita la señalización de datos por USB llamando al La API deenableUsbDataSignal
enUsbManager
canUsbDataSignalingBeDisabled()
es una API que verifica si se habilita o inhabilita la señalización de datos por USB compatibles con el dispositivo.isUsbDataSignalingEnabled()
es una API que verifica si se habilitó la señalización de datos USB.- Esto es necesario para verificar si se muestra o no una ventana de diálogo de transparencia de la política. 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 se habilitó la señalización de datos USB para un usuario en particular.
- Presiona Configuración.
- Presiona Dispositivos conectados.
- Presiona USB.
Ejemplo de implementación de Device Policy Manager
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();
Configuración
Los usuarios pueden modificar la preferencia de USB y la configuración de conexión mediante dispositivo móvil tan pronto como se conecte el USB. Para acceder a la pantalla de preferencias de USB, haz lo siguiente:
Nota: Si el USB no está conectado, no se pueden modificar las preferencias de USB y no aparecerán en la ventana Dispositivos conectados.
Si un administrador de TI inhabilita la señalización de datos USB en un dispositivo de propiedad de la empresa, el usuario no puede modificar sus preferencias de USB. En su lugar, todas las preferencias de USB en Configuración están completamente inhabilitadas, lo que creará una ventana de diálogo de transparencia de la política.
Nota: Si la señalización de datos por USB está inhabilitada, depuración por USB, predeterminada Las configuraciones de USB y las preferencias de enrutamiento de audio USB se inhabilitarán en opciones para desarrolladores.