Me gustaría activar la "conexión USB" desde un script bash, entonces, ¿hay alguna posibilidad de ejecutar una línea de comando adb shell
para cambiar algunas configuraciones de Android?
Editar1 :
El siguiente comando abre la configuración necesaria pero no cambia nada solo:
am start -n com.android.settings/.TetherSettings
He encontrado el nombre de la acción TetherSettings de
aapt dump xmltree com.android.settings.apk AndroidManifest.xml | less +/ether
aapt dump xmltree com.android.settings.apk AndroidManifest.xml
pero eso no funcionó en mi teléfono (no se encontró). ¿Cómo puedo ver una lista de las configuraciones disponibles?find / -name 'com.android.settings.apk'
por teléfono, pero no surgió nada :( ¿Puede decirme dónde puedo encontrar com.android.settings.apk?Respuestas:
Ejecutar el siguiente comando como root debería habilitar la conexión USB:
service call connectivity 32 i32 1
en Ice Cream Sandwich (4.0)service call connectivity 33 i32 1
en Jelly Bean (4.1 a 4.3)service call connectivity 34 i32 1
en KitKat (4.4)service call connectivity 30 i32 1
en Lollipop (5.0)service call connectivity 31 i32 1
en Lollipop (5.1) según una respuesta de Firelordservice call connectivity 30 i32 1
en Marshmallow (6.0), no probadoservice call connectivity 41 i32 1
en Samsung Marshmallow (6.0)service call connectivity 33 i32 1
en turrón (7.0)service call connectivity 39 i32 1
en Samsung Turrón (7.0)El primer número que ve en los comandos es el
setUsbTethering()
número del métodoIConnectivityManager.aidl
(esto depende de la versión de Android y no existe en Gingerbread).(Sugerencia: para verificar este archivo para una versión particular de Android, seleccione la rama apropiada).
Entonces, lo que hace este comando es llamar
setUsbTethering()
y pasar 1 (habilite la conexión USB) o 0 (para deshabilitarlo).Para obtener más información, consulte esta pregunta relacionada sobre Desbordamiento de pila .
Si habilita la conexión USB como parte de una configuración de conexión inversa USB,
setprop sys.usb.config rndis,adb
debería ser más que suficiente pararndis0
configurar la interfaz.fuente
Hay un método bastante malo que usa
adb shell input tap
, Obtener las coordenadas para habilitar el anclaje y sustituirO navegue para habilitar la radio usando
adb shell input keyevent
. Solo echa un vistazo aDe nuevo, esto se limita a un dispositivo en particular.
fuente
adb shell "am start -n com.android.settings/.TetherSettings; input keyevent KEYCODE_DPAD_UP; input keyevent KEYCODE_ENTER"
. Encontré una lista de eventos clave en SO.Prueba el
setprop
siguiente comando:fuente
Modificado para usar el comando de tiempo de espera de Windows en lugar de dormir, activar la pantalla primero y solo presionar hacia abajo una vez. El doble de conexión Wi-Fi habilitada en mi teléfono.
fuente
El
service
método no funcionó para mí en mi dispositivo Samsung. Sin embargo, descubrí cómo hacerlo configurando la interfaz de red directamente. Aquí hay un script que configura una máquina Linux y un dispositivo Android rooteado conectado por USB para la conexión USB. Esto no configura el enmascaramiento de DNS o NAT, pero es suficiente para que el dispositivo sea accesible en 192.168.42.129:Para habilitar el reenvío (es decir, conectarse a Internet desde la PC a través del dispositivo Android), vea mi pregunta y respuesta aquí .
fuente
esto es independiente del dispositivo (alterna la conexión USB)
fuente