Используя оболочку ADB, как я могу отключить точку доступа / модем на леденец Nexus 5

Мой экран сломался, и я использовал свой телефон с установленным на нем VNC-сервером, но сегодня утром мне пришла в голову глупая идея включить точку доступа, просто чтобы посмотреть, смогу ли я использовать свой тарифный план для мобильных данных на своем ноутбуке, но когда я сделал это, Wi-Fi отключился от моего маршрутизатора, и теперь у меня есть доступ к моему телефону только с помощью оболочки adb.

Мне нужно отключить точку доступа из ADB, я уже искал в Google, но ничего не нашел, я также пытался отключить и включить Wi-Fi, не работает.

Ответы (2)

Более чистый способ сделать это — вызвать команду «service call».

Например, на моем телефоне я мог бы позвонить

# Start Wifi tethering
adb shell service call connectivity 24 i32 0 
# Stop Wifi tethering
adb shell service call connectivity 25 i32 0 

Service callвызовет номер функции 24в службе подключения (которая оказалась функцией, которая включает модем) и передаст его 0в качестве аргумента ( 0будет модем Wi-Fi, 1 будет модем USB и 2будет bluetooth).

К сожалению, код сервисных функций меняется от одной версии Android к другой. Этот ответ stackoverflow объясняет, как получить правильный код функции для вашей текущей версии Android. https://stackoverflow.com/questions/20227326/где-найти-информацию-на-androids-service-call-shell-command

Также это список функций для службы подключения для версии Android, которую я использую (Nougat) https://android.googlesource.com/platform/frameworks/base/+/android-7.1.2_r1/core/java/android/net /IConnectivityManager.aidl

Похоже, мне не хватает некоторых разрешений, я вижу это в журнале посылок, который я получаю при выполнении команды
Да, я забыл сказать, что вам нужно иметь root-права, чтобы сделать это, поэтому вам нужно выполнить команду «su» перед запуском любого из них.
  adb shell input keyevent 3 # home   

  adb shell am start -a android.intent.action.MAIN -n com.android.settings/.Settings

  adb shell input keyevent 20 # down                                                   

  adb shell input keyevent 20 # down

  adb shell input keyevent 20 # down

  adb shell input keyevent 66 # enter

  adb shell input keyevent 20 # down

  adb shell input keyevent 20 # down

  adb shell input keyevent 66 # enter                                                 

  adb shell input keyevent 20 # down

  adb shell input keyevent 66 # enter
+1. Это полезно, хотя в моем CM12 мне пришлось добавить еще несколько ключевых событий 20 и 66, но это работает хорошо. Хороший!
Используя этот вопрос , решение можно сократить до трех шагов: - adb shell am start -n com.android.settings/.TetherSettings-> adb shell input keyevent 20-> adb shell input keyevent 66 . Сделанный!
Это работало для моего Nexus 6 на Android 5.0, чтобы включить WifiTether, но мне пришлось добавить еще одно ключевое событие 20. Кажется, 5.0+ не позволяет включать WifiTether из плагина Tasker или из самого Tasker. На самом деле нет команды am start, которая напрямую запускает точку доступа?