Try to use registerBestMatchingNetworkCallback
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user