Как и в Android Q, некоторые WiFi API-интерфейсы ограничены. Я пытаюсь использовать альтернативные API для подключения к другой точке доступа Wi-Fi для интернета.
Ниже мой код:
WifiNetworkSpecifier.Builder builder = new WifiNetworkSpecifier.Builder();
builder.setSsid("wifi-ap-ssid");
builder.setWpa2Passphrase("wifi-ap-password");
WifiNetworkSpecifier wifiNetworkSpecifier = builder.build();
NetworkRequest.Builder networkRequestBuilder1 = new NetworkRequest.Builder();
networkRequestBuilder1.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
networkRequestBuilder1.setNetworkSpecifier(wifiNetworkSpecifier);
NetworkRequest nr = networkRequestBuilder1.build();
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
cm.requestNetwork(nr, callback);
Это позволяет мне подключиться, но Интернет отключен. Это работает, как определено в документации для Android.
Альтернативный способ, который я попробовал, ниже:
WifiNetworkSuggestion.Builder wifiNetworkSuggestionBuilder1 = new WifiNetworkSuggestion.Builder();
wifiNetworkSuggestionBuilder1.setSsid("wifi-ap-ssid");
wifiNetworkSuggestionBuilder1.setWpa2Passphrase("wifi-ap-password");
WifiNetworkSuggestion wifiNetworkSuggestion = wifiNetworkSuggestionBuilder1.build();
List<WifiNetworkSuggestion> list = new ArrayList<>();
list.add(wifiNetworkSuggestion);
wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
wifiManager.removeNetworkSuggestions(new ArrayList<WifiNetworkSuggestion>());
wifiManager.addNetworkSuggestions(list);
объявлено разрешение в манифесте:
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
Использование этого ничего не изменило в поведении.
Пожалуйста, дайте знать последовательность API для успешного подключения к другой точке доступа Wi-Fi с возможностью подключения к Интернету.