Android автоматически отключается от Wi -Fi без Интернета ниже Android 10Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android автоматически отключается от Wi -Fi без Интернета ниже Android 10

Сообщение Anonymous »

Работая над приложением Android, в котором мне нужно программно подключить устройство WiFi, которое не имеет Интернета. Вот код: < /p>

private void connectToWiFi(final String ssid, String password) {

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
final ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkRequest.Builder request = new NetworkRequest.Builder();
request.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
request.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); // Internet not required

ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {

@Override
public void onAvailable(Network network) {

String networkSSID = getNetworkSsid();

if (networkSSID.equals(ssid)) {
connectivityManager.bindProcessToNetwork(network);
}
}

@Override
public void onUnavailable() {
super.onUnavailable();
}

@Override
public void onLost(@NonNull Network network) {
super.onLost(network);
}
};
connectivityManager.registerNetworkCallback(request.build(), networkCallback);

WifiConfiguration config = new WifiConfiguration();
config.SSID = String.format("\"%s\"", ssid);

int netId = -1;
List apList = wifiManager.getConfiguredNetworks();

for (WifiConfiguration i : apList) {

if (i.SSID != null && i.SSID.equals("\"" + ssid + "\"")) {
netId = i.networkId;
}
}

// Add network in Saves network list if it is not available in list
if (netId == -1) {

if (TextUtils.isEmpty(password)) {
Log.d(TAG, "====== Connect to open network");
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
} else {
Log.d(TAG, "====== Connect to secure network");
config.preSharedKey = String.format("\"%s\"", password);
}

netId = wifiManager.addNetwork(config);
}

Log.d(TAG, "Connect to Network : " + netId);
wifiManager.enableNetwork(netId, true);

} else {

// For Android 10 and above
// WifiNetworkSpecifier code
}
}
< /code>

Используются разрешения: < /p>








< /code>

Вышевой код хорошо работает для сетей, которые предлагают подключение к Интернету.
, но в большинстве случаев он не работает в большинстве случаев без подключения к Интернету. Система отключится от этой сети Wi -Fi. Это не позволяет оставаться на связи с Wi -Fi, у которого нет интернета.
Это действительно удивительно, Android никогда не думал о случаях использования устройств IoT, прежде чем ограничивать сетевое соединение.UID xxxxx does not have permission to update configuration< /code> < /p>

Такая же ошибка не происходит, когда приложение пытается подключить устройство, которое имеет интернет, даже если эта сеть добавляется каким -либо другим приложением. Но через несколько секунд сеть отключена, и система пытается повторно акцентировать с некоторыми другими сетью с поддержкой в ​​Интернете. И в основном эта ошибка представлена ​​из Android 7 или что -то в этом роде, потому что она работала ранее. < /P>

Я также сообщил о проблеме здесь. Также предоставлено пример примера в этом выпуске.
есть ли возможность платной поддержки от Android? < /p>

Заранее. < /p>

Подробнее здесь: https://stackoverflow.com/questions/623 ... android-10
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»