Chciałbym aktywować „Tethering przez USB” z poziomu skryptu bash, więc czy jest jakaś możliwość uruchomienia wiersza poleceń, adb shell
aby zmienić niektóre ustawienia Androida?
Edycja1 :
Następujące polecenie otwiera wymagane ustawienia, ale nie zmienia niczego samodzielnie:
am start -n com.android.settings/.TetherSettings
Znalazłem nazwę działania TetherSettings od
aapt dump xmltree com.android.settings.apk AndroidManifest.xml | less +/ether
aapt dump xmltree com.android.settings.apk AndroidManifest.xml
ale to nie działało na moim telefonie (aapt nie znaleziono). Jak mogę wyświetlić listę dostępnych ustawień?find / -name 'com.android.settings.apk'
na telefon, ale nic nie wymyślił :( Czy możesz dać mi znać, gdzie mogę znaleźć com.android.settings.apk?Odpowiedzi:
Uruchomienie następującego polecenia jako root powinno włączyć tethering przez USB:
service call connectivity 32 i32 1
na lody Sandwich (4.0)service call connectivity 33 i32 1
na Jelly Bean (4.1 do 4.3)service call connectivity 34 i32 1
na KitKat (4.4)service call connectivity 30 i32 1
na Lollipop (5.0)service call connectivity 31 i32 1
na Lollipop (5.1) zgodnie z odpowiedzią przez Ogniaservice call connectivity 30 i32 1
na Marshmallow (6.0), niesprawdzoneservice call connectivity 41 i32 1
na Samsung Marshmallow (6.0)service call connectivity 33 i32 1
w sprawie Nougat (7.0)service call connectivity 39 i32 1
na Samsung Nougat (7.0)Pierwszą liczbą, którą widzisz w poleceniach, jest numer
setUsbTethering()
metodyIConnectivityManager.aidl
(zależy to od wersji Androida i nie istnieje w Pierniku).(Wskazówka: aby sprawdzić ten plik dla konkretnej wersji Androida, wybierz odpowiednią gałąź).
To polecenie wykonuje wywołanie
setUsbTethering()
i przekazuje 1 (włącz tethering przez USB) lub 0 (aby je wyłączyć).Aby uzyskać więcej informacji, zobacz to pokrewne pytanie dotyczące przepełnienia stosu .
Jeśli włączasz tethering przez USB jako część konfiguracji tetheringu odwrotnego USB,
setprop sys.usb.config rndis,adb
powinno wystarczyć dorndis0
skonfigurowania interfejsu.źródło
Istnieje dość zła metoda użycia
adb shell input tap
: Uzyskaj współrzędne, aby włączyć tethering i zastąpićLub nawiguj, aby włączyć korzystanie z radia
adb shell input keyevent
. Wystarczy spojrzeć naPonownie ogranicza się to do konkretnego urządzenia.
źródło
adb shell "am start -n com.android.settings/.TetherSettings; input keyevent KEYCODE_DPAD_UP; input keyevent KEYCODE_ENTER"
. Znalazłem listę kluczowych wydarzeń na SO.Spróbuj
setprop
wykonać poniższe polecenie:źródło
Zmodyfikowano tak, aby używał polecenia limitu czasu systemu Windows zamiast uśpienia, najpierw wybudzaj ekran i naciśnij tylko raz. Dwukrotnie włączony tethering Wi-Fi w moim telefonie.
źródło
Ta
service
metoda nie działała na moim urządzeniu Samsung. Jednak wymyśliłem, jak to zrobić, bezpośrednio konfigurując interfejs sieciowy. Oto skrypt, który konfiguruje komputer z systemem Linux i zrootowane urządzenie z Androidem podłączone do USB do modemu USB. Nie konfiguruje to maskowania DNS ani NAT, ale wystarcza, aby urządzenie było dostępne pod adresem 192.168.42.129:Aby włączyć przekazywanie (tj. Połączyć się z Internetem z komputera za pośrednictwem urządzenia z systemem Android), zobacz moje pytanie i odpowiedź tutaj .
źródło
jest to niezależne od urządzenia (przełącza tethering przez USB)
źródło