Я сейчас пытаюсь подключиться к сети Wi-Fi. Я использовал приведенный ниже код.
WifiNetworkSpecifier specifier = new WifiNetworkSpecifier.Builder()
.setSsid(ssid)
.setBssid(MacAddress.fromString(bssid))
.setWpa2Passphrase(password)
.build();
NetworkRequest request = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.setNetworkSpecifier(specifier)
.build();
ConnectivityManager manager = (ConnectivityManager) context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
manager.requestNetwork(request, new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(@NonNull Network network) {
ConnectivityManager.setProcessDefaultNetwork(network);
super.onAvailable(network);
NetworkInfo info = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (info != null && info.isConnectedOrConnecting()) {
if (!emitter.isDisposed()) {
emitter.onSuccess(true);
}
} else {
if (!emitter.isDisposed()) {
emitter.onError(new RuntimeException("OS Disconnected"));
}
}
}
@Override
public void onUnavailable() {
super.onUnavailable();
if (!emitter.isDisposed()) {
emitter.onError(new RuntimeException("Could not connect Wifi"));
}
}
});
});
проблема: приведенный выше код хорошо работает с телефоном Pixel и Nokia, но на устройствах Oneplus я получаю тост об успешном подключении и сразу после отключения этого Wi-Fi. Символ Wi-Fi очень кратковременно отображается в строке состояния. В следующий момент символ Wi-Fi исчезнет, и снова появится системный диалог для подключения к Wi-Fi.
Ниже предоставлены разрешения, разрешение на местоположение предоставляется, и оно также включено на устройстве.
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
Когда я отлаживаю обратный вызов, он использует методы в этом порядке:
- onAvailable ()
- onCapabilitiesChanged ()
- onBlockedStatusChanged (заблокировано: ложь)
- onCapabilitiesChanged ()
- onLost ()
Я уже ссылался на эти Android Q, программно подключиться к другой точке доступа Wi-Fi для Интернета
WiFi Сетевое соединение продолжает отключаться на Android Q Wi-Fi Проблема с подключением Api сетевого запроса в android 10 (Q) Android Q, WifiNetworkSpecifier теряет Wi-Fi сразу после установления соединения
и я не мог найти решение.
Есть ли что-то, что мне не хватает в сетевом запросе, что вызывает отключение? или любое другое решение по достоинству.
Спасибо.