Как отключить Wi-Fi через АБР?
Я автоматизирую процедуру тестирования для wifi-вызова, и мне было интересно, есть ли способ отключить/включить wifi через adb?
Я хотел бы отключить/включить Wi-Fi или убить Wi-Fi (com.movial.wificall) и перезапустить его.
Возможно ли это сделать с помощью команд adb и shell?
до сих пор я нашел:
android.net.wifi.WifiManager
setWifiEnabled(true/false)
Я просто не знаю, как это сделать.
Ответы
Ответ 1
Использование "svc" через ADB (требуется корень):
Включить:
adb shell su -c 'svc wifi enable'
Отключить:
adb shell su -c 'svc wifi disable'
Использование ключевых событий через ADB:
adb shell am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings
adb shell input keyevent 20 & adb shell input keyevent 23
Первая строка запускает действие "wifi.WifiSettings", открывающее страницу настроек WiFi. Вторая строка имитирует нажатия клавиш.
Я тестировал эти две строки на Droid X. Но ключевые события выше, вероятно, нужно редактировать в других устройствах из-за разного макета настроек.
Подробнее о "keyevents" здесь.
Ответ 2
Я искал то же самое, чтобы включить/выключить bluetooth, и я нашел это:
adb shell svc wifi enable|disable
Ответ 3
Простым способом переключения Wi-Fi на ненагруженные устройства является использование простого приложения:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WifiManager wfm = (WifiManager) getSystemService(Context.WIFI_SERVICE);
try {
wfm.setWifiEnabled(Boolean.parseBoolean(getIntent().getStringExtra("wifi")));
} catch (Exception e) {
}
System.exit(0);
}
}
AndroidManifest.xml:
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
Команды ADB:
$ adb shell am start -n org.mytools.config/.MainActivity -e wifi true
$ adb shell am start -n org.mytools.config/.MainActivity -e wifi false
Ответ 4
Ответ 5
adb shell "svc wifi enable"
Это сработало, и оно работает в фоновом режиме без открытия соответствующей опции.
Ответ 6
Я протестировал эту команду: adb shell am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings
входной ключ ввода adb-оболочки 19 и входной ключ ввода adb-оболочки 19 и входной сигнал ввода-вывода adb 23
и работает только в окне приглашения, возможно, из-за какого-то драйвера
about adb shell svc wifi enable | disable Я предполагаю, что работает только с правами root
Ответ 7
использовать с кавычками
ex: adb shell "svc wifi enable"
это будет работать:)
Ответ 8
Я могу просто сделать:
settings put global wifi_on 0
settings put global wifi_scan_always_enabled 0
Иногда, если это делается во время загрузки (например, для исправления bootloop, такого как этот), это не очень хорошо, и вы можете продолжить сначала включить режим полета:
settings put global airplane_mode_on 1
settings put global wifi_on 0
settings put global wifi_scan_always_enabled 0
Другим вариантом является принудительное выполнение с помощью:
while true; do settings put global wifi_on 0; done
Протестировано в Android 7 на LG G5 (SE) с мотивом (некорневым).