Inhabilitar la señalización de datos a través de USB

En Android 12, se agregó la capacidad de que los administradores de TI inhabiliten la señalización de datos a través de USB en dispositivos empresariales (excepto para 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 dispositivos

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 USB llamando a la API de enableUsbDataSignal en UsbManager.
  • canUsbDataSignalingBeDisabled() es una API que verifica si se admite la habilitación o inhabilitación de la señalización de datos USB en 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.
  • Ejemplo de implementación de Device Policy Manager

    El siguiente es un ejemplo de cómo implementar Device Policy Manager.
    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:

    1. Presiona Configuración.
    2. Presiona Dispositivos conectados.
    3. Presiona USB.

    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 empresarial, el usuario no podrá modificar sus preferencias de USB. En su lugar, todas las preferencias de USB en Configuración están inhabilitadas por completo, lo que creará una ventana de diálogo de transparencia de políticas.

    Nota: Si se inhabilita la señalización de datos USB, se inhabilitarán la depuración por USB, las configuraciones predeterminadas de USB y las preferencias de enrutamiento de audio por USB en las opciones para desarrolladores.