Improve detecting connection

This commit is contained in:
Jonas Lochmann 2019-10-14 15:14:10 +02:00
parent 408cc78290
commit 674420f8c9
No known key found for this signature in database
GPG key ID: 8B8C9AEE10FA5B36

View file

@ -21,10 +21,12 @@ import android.content.Intent
import android.content.IntentFilter import android.content.IntentFilter
import android.net.ConnectivityManager import android.net.ConnectivityManager
import android.net.NetworkInfo import android.net.NetworkInfo
import android.util.Log
import androidx.core.net.ConnectivityManagerCompat import androidx.core.net.ConnectivityManagerCompat
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import io.timelimit.android.BuildConfig import io.timelimit.android.BuildConfig
import io.timelimit.android.async.Threads
object NetworkStatusUtil { object NetworkStatusUtil {
fun getSystemNetworkStatusLive(context: Context): LiveData<NetworkStatus> { fun getSystemNetworkStatusLive(context: Context): LiveData<NetworkStatus> {
@ -36,14 +38,16 @@ object NetworkStatusUtil {
if (BuildConfig.hasServer) { if (BuildConfig.hasServer) {
context.applicationContext.registerReceiver(object : BroadcastReceiver() { context.applicationContext.registerReceiver(object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent) { override fun onReceive(context: Context?, intent: Intent) {
val networkInfo = ConnectivityManagerCompat.getNetworkInfoFromBroadcast(connectivityManager, intent) Threads.mainThreadHandler.post {
val networkInfo = connectivityManager.activeNetworkInfo
if (networkInfo == null) { if (networkInfo == null) {
status.value = NetworkStatus.Offline status.value = NetworkStatus.Offline
} else if (networkInfo.detailedState == NetworkInfo.DetailedState.CONNECTED) { } else if (networkInfo.detailedState == NetworkInfo.DetailedState.CONNECTED) {
status.value = NetworkStatus.Online status.value = NetworkStatus.Online
} else { } else {
status.value = NetworkStatus.Offline status.value = NetworkStatus.Offline
}
} }
} }
}, IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)) }, IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION))