Repository navigation
Подключение к сохранённой сети по id, не трогая настройки Android (v1.20) - #2
Merged
Merged
Conversation
added 2 commits
September 22, 2026 17:10
cmd wifi connect-network добавляет сеть заново и переписывает сохранённую запись значениями по умолчанию: MAC-рандомизация, «лимитная сеть», автоподключение, «отправлять имя устройства» сбрасывались при каждом нажатии. Теперь к уже сохранённой сети приложение подключается через IWifiManager.connect(netId) — свой helper (WifiHelper) запускается привилегированным шеллом через app_process, как системный svc. Запись сети не меняется; из профиля применяется только autoJoin (allowAutojoin). Сеть, которой ещё нет, добавляется как раньше. Тумблер «Пересоздавать сохранённую сеть» (overwriteSaved) возвращает старое поведение. Версия 1.20.
Булев autoJoin со значением «вкл.» по умолчанию заставлял helper при каждом подключении делать allowAutojoin(true) — то есть молча затирал выключенное в Android автоподключение, ровно то, от чего это изменение защищает. Теперь три значения: SYSTEM (как в Android, по умолчанию), ON, OFF. Старые true/false читаются как ON/OFF и в YAML, и в сохранённом JSON — иначе смена типа сбросила бы конфиг 1.19 к значениям по умолчанию. Пароль Wi-Fi в редакторе профиля скрыт точками, кнопка «Показать».
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Проблема:
cmd wifi connect-networkне выбирает сохранённую сеть, а добавляет её заново, иWifiConfigManager.mergeWithInternalWifiConfigurationпереносит в сохранённую запись поля свежегоWifiConfiguration— MAC-рандомизация (→ авто),meteredOverride(→ авто),allowAutojoin, «отправлять имя устройства». Всё, что задано в настройках Wi-Fi Android, сбрасывалось при каждом нажатии кнопки. Прокси и статический IP выживали только потому, что merge пропускаетUNASSIGNED.Решение: к уже сохранённой сети подключаться так же, как это делает тап в настройках Android —
IWifiManager.connect(config = null, netId). Такого вызова вcmd wifiнет, поэтому в APK добавлен helperWifiHelper(objectсmain), который привилегированный шелл запускает черезapp_processс APK вCLASSPATH— так устроен системныйsvc. Внутриapp_processнет ограничений на скрытые API, а uid shell/root даётNETWORK_SETTINGS; рассчитан и на Shizuku, и на root. Сигнатуры AIDL между релизами разные (12: 3 параметра, 13–14: 4, 15+: 5), поэтому параметры подставляются по типу.Поведение:
isSecurityType, так что WPA2-профиль матчит и auto-upgraded WPA3) и вызываетconnect(netId). Запись сети в Android не меняется; пароль в профиле не нужен. В подробный лог пишется, что Android хранит для сети (MAC, лимит, IP, прокси, автоподключение, скрытость);SYSTEM(как в Android, по умолчанию — ничего не трогаем),ON,OFF; для сохранённой сети применяется черезallowAutojoin, для новой — флагом-d. БулевautoJoinиз 1.19 (true/false) читается какON/OFFи в YAML, и в сохранённом JSON — у enum свой сериализатор, потому что ошибка разбора сохранённого конфига молча сбрасывает его к значениям по умолчанию;connect-networkиз профиля (нужен пароль);overwriteSaved: true, по умолчаниюfalse) возвращает старое поведение, с предупреждением в логе;Также: README (обе версии) — новый раздел «Сохранённые сети и настройки Android», уточнены раздел про пароли, абзац про автоподключение и таблица команд; пример конфига; тесты на
autoJoin(YAML и JSON-совместимость с 1.19),overwriteSavedи элементы диалога. Версия 1.20 (versionCode 21).Проверить на устройстве после установки: подключиться к сети с прокси/«MAC устройства», заданными в Android, и убедиться, что после кнопки NetSwitcher они на месте; в подробном логе должна быть строка
helper connect … -> 0 | ok id=Nи строка «В Android: …».