Ich möchte "USB-Tethering" über ein Bash-Skript aktivieren. Gibt es also eine Möglichkeit, eine Befehlszeile mit auszuführen adb shell
, um einige Android-Einstellungen zu ändern?
Edit1 :
Der folgende Befehl öffnet die erforderlichen Einstellungen, ändert aber nichts:
am start -n com.android.settings/.TetherSettings
Ich habe den Aktionsnamen TetherSettings von gefunden
aapt dump xmltree com.android.settings.apk AndroidManifest.xml | less +/ether
aapt dump xmltree com.android.settings.apk AndroidManifest.xml
aber das hat auf meinem Telefon nicht funktioniert (aapt nicht gefunden). Wie kann ich eine Liste der verfügbaren Einstellungen sehen?find / -name 'com.android.settings.apk'
am Telefon, aber nichts kam :( Können Sie mich bitte wissen lassen, wo ich com.android.settings.apk finden kann?Antworten:
Wenn Sie den folgenden Befehl als root ausführen, sollte das USB-Tethering aktiviert sein:
service call connectivity 32 i32 1
auf Ice Cream Sandwich (4.0)service call connectivity 33 i32 1
auf Jelly Bean (4,1 bis 4,3)service call connectivity 34 i32 1
auf KitKat (4.4)service call connectivity 30 i32 1
auf Lutscher (5.0)service call connectivity 31 i32 1
auf Lollipop (5.1) nach einer Antwort von Firelordservice call connectivity 30 i32 1
auf Marshmallow (6.0), ungetestetservice call connectivity 41 i32 1
auf Samsung Marshmallow (6.0)service call connectivity 33 i32 1
auf Nougat (7.0)service call connectivity 39 i32 1
auf Samsung Nougat (7.0)Die erste Zahl, die Sie in den Befehlen sehen, ist die
setUsbTethering()
Nummer der Methode inIConnectivityManager.aidl
(dies hängt von der Android-Version ab und ist in Gingerbread nicht vorhanden).(Tipp: Um diese Datei auf eine bestimmte Android-Version zu überprüfen, wählen Sie den entsprechenden Zweig aus.)
Mit diesem Befehl wird also
setUsbTethering()
entweder 1 (USB-Tethering aktivieren) oder 0 (zum Deaktivieren) aufgerufen und übergeben.Weitere Informationen finden Sie in dieser verwandten Frage zum Stapelüberlauf .
Wenn Sie USB-Tethering als Teil eines USB-Reverse-Tethering-Setups aktivieren,
setprop sys.usb.config rndis,adb
sollte dies mehr als ausreichend sein, um dierndis0
Schnittstelle einzurichten.quelle
Es gibt eine ziemlich schlechte Methode
adb shell input tap
, bei der die Koordinaten für das Aktivieren und Ersetzen von Tethering abgerufen werdenOder navigieren Sie zum Aktivieren des Radios mit
adb shell input keyevent
. Schauen Sie doch mal rein,Dies beschränkt sich wiederum auf ein bestimmtes Gerät.
quelle
adb shell "am start -n com.android.settings/.TetherSettings; input keyevent KEYCODE_DPAD_UP; input keyevent KEYCODE_ENTER"
. Ich habe eine Liste der wichtigsten Ereignisse auf SO gefunden.Versuchen Sie den folgenden
setprop
Befehl:quelle
Geändert, um den Windows-Befehl "Zeitüberschreitung" anstelle von "Ruhezustand" zu verwenden. Wachen Sie den Bildschirm zuerst auf und drücken Sie ihn nur einmal nach unten. Zweimal aktiviertes WLAN-Tethering auf meinem Telefon.
quelle
Die
service
Methode funktionierte auf meinem Samsung-Gerät nicht. Ich fand heraus, wie es geht, indem ich die Netzwerkschnittstelle direkt konfigurierte. Hier ist ein Skript, das einen Linux-Computer und ein über USB verbundenes verwurzeltes Android-Gerät für das USB-Tethering einrichtet. Hiermit wird keine DNS- oder NAT-Maskierung eingerichtet, es ist jedoch ausreichend, um das Gerät unter 192.168.42.129 verfügbar zu machen:Informationen zum Aktivieren der Weiterleitung (dh zum Herstellen einer Verbindung zum Internet vom PC über das Android-Gerät) finden Sie unter Meine Frage und Antwort hier .
quelle
dies ist geräteunabhängig (schaltet das USB-Tethering um)
quelle