Gostaria de ativar o "tethering USB" a partir de um script bash, então existe a possibilidade de executar uma linha de comando adb shell
para alterar algumas configurações do Android?
Edit1 :
O comando a seguir abre as configurações necessárias, mas não altera nada sozinho:
am start -n com.android.settings/.TetherSettings
Encontrei o nome da ação TetherSettings de
aapt dump xmltree com.android.settings.apk AndroidManifest.xml | less +/ether
aapt dump xmltree com.android.settings.apk AndroidManifest.xml
mas isso não funcionou no meu telefone (aapt não encontrado). Como posso ver uma lista das configurações disponíveis?find / -name 'com.android.settings.apk'
no telefone, mas nada veio :( Você pode por favor deixe-me saber onde posso encontrar com.android.settings.apk?Respostas:
A execução do seguinte comando como root deve ativar o tethering USB:
service call connectivity 32 i32 1
em Sanduíche de Sorvete (4.0)service call connectivity 33 i32 1
no Jelly Bean (4.1 a 4.3)service call connectivity 34 i32 1
no KitKat (4.4)service call connectivity 30 i32 1
em pirulito (5.0)service call connectivity 31 i32 1
no pirulito (5.1) de acordo com uma resposta do Firelordservice call connectivity 30 i32 1
no Marshmallow (6.0), não testadoservice call connectivity 41 i32 1
no Samsung Marshmallow (6.0)service call connectivity 33 i32 1
em Nougat (7.0)service call connectivity 39 i32 1
no Samsung Nougat (7.0)O primeiro número que você vê nos comandos é o
setUsbTethering()
número do métodoIConnectivityManager.aidl
(isso depende da versão do Android e não existe no Gingerbread).(Dica: para verificar se esse arquivo possui uma versão específica do Android, selecione a ramificação apropriada.)
Portanto, o que esse comando faz é chamar
setUsbTethering()
e passar 1 (ativar o tethering USB) ou 0 (para desativá-lo).Para obter mais informações, consulte esta pergunta relacionada no Stack Overflow .
Se você estiver ativando o tethering USB como parte de uma configuração de tethering reverso USB,
setprop sys.usb.config rndis,adb
deve ser mais do que suficiente pararndis0
configurar a interface.fonte
Existe um método bastante ruim de usar
adb shell input tap
, obter as coordenadas para ativar o tethering e substituirOu navegue para ativar o rádio usando
adb shell input keyevent
. Basta dar uma olhada,Novamente, isso se limita a um dispositivo específico.
fonte
adb shell "am start -n com.android.settings/.TetherSettings; input keyevent KEYCODE_DPAD_UP; input keyevent KEYCODE_ENTER"
. Encontrei uma lista dos principais eventos no SO.Experimente o
setprop
comando abaixo:fonte
Modificado para usar o comando timeout do Windows em vez de suspensão, ative a tela primeiro e pressione apenas uma vez. Duas vezes ativada a conexão wifi no meu telefone.
fonte
O
service
método não funcionou para mim no meu dispositivo Samsung. Eu descobri como fazê-lo, configurando a interface de rede diretamente, no entanto. Aqui está um script que configura uma máquina Linux e um dispositivo Android com raiz USB conectado para compartilhamento USB. Isso não configura o mascaramento de DNS ou NAT, mas é suficiente para tornar o dispositivo acessível em 192.168.42.129:Para ativar o encaminhamento (por exemplo, conectar-se à Internet a partir do PC através do dispositivo Android), consulte minha pergunta e resposta aqui .
fonte
isso é independente do dispositivo (alterna o tethering USB)
fonte