Код: Выделить всё
fun startNetworkObserver() {
try {
val builder = NetworkRequest.Builder()
builder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
builder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
connectivityManager.registerNetworkCallback(builder.build(),networkCallback)
} catch (e: Exception) {
FL.e(TAG, "Error startNetworkObserver::${e.message}")
}
}
Затем я проверяю это:
Код: Выделить всё
private fun checkBothNetworksAvailable() {
for (item in availableNetworks.value){
Log.d(TAG, "checkBothNetworksAvailable : $item")
}
val isWifiAvailable = availableNetworks.value.any { it.type == ConnectivityTransport.Wifi }
val isCellularAvailable = availableNetworks.value.any { it.type == ConnectivityTransport.Cellular }
Log.d(TAG, "checkBothNetworksAvailable : WIFI: $isWifiAvailable / 4G: $isCellularAvailable")
}
Я получу это:
Код: Выделить всё
NetworkUtils: checkBothNetworksAvailable : WIFI: true / 4G: true
Код: Выделить всё
NetworkUtils: checkBothNetworksAvailable : WIFI: true / 4G: true
Код: Выделить всё
NetworkUtils: checkBothNetworksAvailable : WIFI: true / 4G: false
Есть ли способ заблокировать это? Я не «выключаю» мобильные данные, в моем Центре уведомлений они все еще включены. Почему Samsung его отключает, триггер onLost. Есть ли способ избежать этого?
Или есть способ получить список «доступных сетей» в другом API/логике?
Я хочу видеть оба активны, как они есть, и проверить уровень сигнала, если один из них лучше -> выбрать его и привязатьProcessToNetwork. Но тот факт, что Samsung «теряет» 4G, даже когда он все еще включен, является своего рода блокировщиком
Подробнее здесь: https://stackoverflow.com/questions/793 ... e-networks
Мобильная версия