Try to use registerBestMatchingNetworkCallback

This commit is contained in:
Mygod
2021-04-22 16:31:59 -04:00
parent a67d435c76
commit 4b55227ed0

View File

@@ -6,6 +6,8 @@ import android.net.LinkProperties
import android.net.Network import android.net.Network
import android.net.NetworkCapabilities import android.net.NetworkCapabilities
import android.os.Build import android.os.Build
import android.os.Handler
import android.os.Looper
import be.mygod.vpnhotspot.util.Services import be.mygod.vpnhotspot.util.Services
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@@ -51,15 +53,22 @@ object DefaultNetworkMonitor : UpstreamMonitor() {
callback.onAvailable(currentLinkProperties) callback.onAvailable(currentLinkProperties)
} }
} else { } else {
if (Build.VERSION.SDK_INT in 24..27) @TargetApi(24) { when (Build.VERSION.SDK_INT) {
Services.connectivity.registerDefaultNetworkCallback(networkCallback) in 31..Int.MAX_VALUE -> @TargetApi(31) {
} else try { Services.connectivity.registerBestMatchingNetworkCallback(networkRequest, networkCallback,
Services.connectivity.requestNetwork(networkRequest, networkCallback) Handler(Looper.getMainLooper()))
} catch (e: SecurityException) { }
// SecurityException would be thrown in requestNetwork on Android 6.0 thanks to Google's stupid bug in 24..27 -> @TargetApi(24) {
if (Build.VERSION.SDK_INT != 23) throw e Services.connectivity.registerDefaultNetworkCallback(networkCallback)
GlobalScope.launch { callback.onFallback() } }
return else -> try {
Services.connectivity.requestNetwork(networkRequest, networkCallback)
} catch (e: SecurityException) {
// SecurityException would be thrown in requestNetwork on Android 6.0 thanks to Google's stupid bug
if (Build.VERSION.SDK_INT != 23) throw e
GlobalScope.launch { callback.onFallback() }
return
}
} }
registered = true registered = true
} }