3 votos

¿Cómo desactivar el USB OTG en Android 6+?

Necesito desactivar el OTG (USB) en Android 8. Ya lo hice en Android 6 deshabilitando un permiso en el archivo android.hardware.usb.host.xml pero ya no funciona en Android 8.1.

2voto

Jack Wade Puntos 231

android.hardware.usb.host.xml que se encuentra en /vendor/etc/permissions/ o /system/etc/permissions/ antes de Treble - contiene feature name="android.hardware.usb.host" que indica que el dispositivo puede comunicarse con los dispositivos USB como el host USB . Esta característica es evaluado por PackageManager (junto con otras características de software / hardware) y utilizado por Google Play para filtrar las aplicaciones (in)compatibles en función del valor <uses-feature android:name="android.hardware.usb.host" /> en AndroidManifest.xml . Ver detalles aquí .

También si el dispositivo no soporta el modo de host USB, UsbHostManager no se inicia, por lo que aplicaciones como este que utilizan API de host USB no puede conectarse a dispositivos USB. Pero cualquier dispositivo conectado sigue siendo detectado por el kernel y aparece en /sys y /dev .

Para confirmar si el dispositivo es compatible con el modo host USB:

~$ pm list features | grep usb.host
feature:android.hardware.usb.host

~$ dumpsys usb | grep host_manager
  host_manager={

Estas líneas no deberían aparecer después de borrar android.hardware.usb.host.xml archivo.


Sin embargo, desde Android 6 Los dispositivos de almacenamiento USB, como una memoria USB, son manejados por vold que no depende de la característica comentada anteriormente. vold escucha al kernel a través de un socket netlink para el dispositivo de bloque uevent ( 1 ) y lo hace coincidir con alguna entrada en fstab ( 2 ) . A continuación, crea nodos de disco y de partición en /dev/block/vold/ ( 3 ) comprueba el sistema de archivos en busca de errores y monta en /mnt/media_rw/ (también emula las tarjetas SD en /mnt/runtime/ ) ( 4 ) . Después de eso ExternalStorageProvider (un proveedor de contenidos) que concede a las apps URI acceso al almacenamiento OTG a través de SAF o Acceso al directorio con alcance .

Así que para desactivar el montaje automático de los dispositivos de almacenamiento USB por vold , es necesario que eliminar la entrada correspondiente de fstab como referencia aquí :

/devices/*/xhci-hcd.0.auto/usb*    auto    auto    defaults    voldmanaged=usb:auto

fstab se encuentra en /odm/etc/ o /vendor/etc/ . Antes de Treble estaba en rootfs ( / ). Ver detalles en esta respuesta .

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X