У меня есть SSID, у которого нет доступа к inte rnet, который я пытаюсь подключить программно из приложения android. Я должен сделать несколько вызовов API с этим SSID, хотя он не имеет inte rnet. Все отлично работает ниже android Q версий. Существует некоторая проблема с android Q-версией.
Я использую Retrofit для связи https.
Я использую WifiNetworkSpecifier и wifi manager для подключения к SSID (нет inte rnet ) программно.
WifiNetworkSpecifier specifier = new WifiNetworkSpecifier.Builder()
.setSsid(ssid)
.setWpa2Passphrase(password)
.build();
NetworkRequest networkRequest = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.addCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED)
.setNetworkSpecifier(specifier)
.build();
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback()
@Override
public void onAvailable(Network network) {
}
@Override
public void onUnavailable() {
super.onUnavailable();
}
@Override
public void onLost(Network network) {
}
};
connectivityManager.requestNetwork(networkRequest, networkCallback, 30000
);
Я могу успешно подключиться к сети Wi-Fi из моего кода. Но каждый раз, когда я выполняю вызовы API SSID, я получаю сообщение " Невозможно разрешить хост" URL. Отсутствует адрес, связанный с именем хоста"в ответном вызове retrofit onFailure () . Но что интересно, если я подключаю SSID из приложения настроек телефона, я не вижу неизвестного исключения для хоста, и все работает нормально.
Может кто-нибудь мне помочь, в android Q, чем отличается подключение SSID программно от через android настройки? Что еще мне нужно изменить, чтобы исправить эту проблему?