Xamarin Android подключиться к существующей точке доступа Wi-Fi - PullRequest
0 голосов
/ 12 апреля 2020

Я потратил час на поиск в Google, и все, что я вижу, сводится к простому коду:

var wifiManager = ApplicationContext.GetSystemService(Context.WifiService).JavaCast<WifiManager>();

WifiConfiguration conf = new WifiConfiguration() { Ssid = @"""ssid""", PreSharedKey = @"""passw""" };

var id = wifiManager.AddNetwork(conf);
var enabled = wifiManager.EnableNetwork(id, true);

, если я установил ssid / пароль для WiFi, который есть в списке на моем Android телефоне, идентификатор равно -1, и ничего не происходит.

, если я устанавливаю для них фиктивные значения, такие как abc / ab c, я получаю реалистичный c идентификатор.

, поэтому я не уверен - что такое назначение этого кода в реальной жизни, если вы не можете подключиться к существующему Wi-Fi?

как мне подключиться к «существующему» Wi-Fi на уровне API 29 +? (под существующим - я имею в виду, что телефон хранится в списке и в данный момент он виден при сканировании Wi-Fi)

Что я действительно хочу, так это переключиться на другой Wi-Fi в моем доме, когда я переезжаю из одной комнаты в другую

Xamarin.Forms 4.5 | Android 10.0

1 Ответ

0 голосов
/ 14 апреля 2020

Обратите внимание, что WifiManager API устарел и перестанет работать при нацеливании Android Q SDK

В документации addNetwork говорится

Добавление описания новой сети к набору настроенных сетей. [выделение мое]

Вы - однако - написали

, если я установил ssid / пароль для WiFi, который есть в списке на моем телефоне Android [.. .]

, который по определению является не новой сетью , а существующей, поэтому addNetwork дает сбой и возвращает -1.

Попробуйте используйте GetConfiguredNetworks и отфильтруйте List<WifiConfiguration> по полю WifiConfiguration.SSID. Затем вы можете использовать WifiConfiguration.NetworkId для EnableNetwork.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...