В моем приложении я подключаюсь к устройству, у которого есть собственная сеть WiFi. В андроиде 6 и выше система спрашивает меня через несколько секунд, если я хочу подключиться к этой сети, даже если нет подключения к Интернету. Только после одобрения этого сообщения я могу подключиться к своему устройству. Я попытался подключиться к сети программно и не заставлял пользователя перейти к его настройкам и каждый раз подключаться вручную. Я использовал следующий код для подключения к сети устройств:Использование WiFi без подключения к Интернету
private void connectToWiFi(WifiManager wifiManager, String wifiName) {
WifiConfiguration configuration = new WifiConfiguration();
configuration.SSID = "\"" + wifiName + "\"";
configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
wifiManager.addNetwork(configuration);
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for (WifiConfiguration i : list) {
if (i.SSID != null && i.SSID.equals("\"" + wifiName + "\"")) {
wifiManager.disconnect();
wifiManager.enableNetwork(i.networkId, true);
wifiManager.reconnect();
break;
}
}
}
, а также пытаюсь заставить приложение использовать подключение Wi-Fi, а не сотовые данные я использую:
NetworkRequest.Builder builder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
builder = new NetworkRequest.Builder();
builder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
connectivityManager.requestNetwork(builder.build(), new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
String ssid = wifiManager.getConnectionInfo().getSSID();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
connectivityManager.bindProcessToNetwork(null);
if (ssid.equals("\"" + Prefs.getWifiName(PUFMainActivity.this) + "\"")) {
connectivityManager.bindProcessToNetwork(network);
connectivityManager.unregisterNetworkCallback(this);
}
}
}
});
}
Хотя до тех пор, поскольку данные сотовой связи активны, устройство не подключается. Если я отключу данные Cellular, то он будет работать нормально. Мне нужно знать, есть ли способ делать то, что я хочу программным образом, не сообщая пользователю отключить его данные Cellular.
Благодаря
Привет @YYjo у вас есть ответ на этот вопрос? –
@KenRatanachaiS. К сожалению нет. Насколько я могу судить, это просто не работает на андроиде. – YYJo