Use main thread for callback and add registerNetworkCallbackCompat

This commit is contained in:
Mygod
2021-09-05 12:47:47 +08:00
parent 2856ad2080
commit e35e586327
5 changed files with 17 additions and 7 deletions

View File

@@ -6,8 +6,6 @@ import android.net.LinkProperties
import android.net.Network
import android.net.NetworkCapabilities
import android.os.Build
import android.os.Handler
import android.os.Looper
import be.mygod.vpnhotspot.util.Services
import be.mygod.vpnhotspot.util.globalNetworkRequestBuilder
import kotlinx.coroutines.GlobalScope
@@ -57,9 +55,12 @@ object DefaultNetworkMonitor : UpstreamMonitor() {
when (Build.VERSION.SDK_INT) {
in 31..Int.MAX_VALUE -> @TargetApi(31) {
Services.connectivity.registerBestMatchingNetworkCallback(networkRequest, networkCallback,
Handler(Looper.getMainLooper()))
Services.mainHandler)
}
in 24..27 -> @TargetApi(24) {
in 26..27 -> @TargetApi(26) {
Services.connectivity.registerDefaultNetworkCallback(networkCallback, Services.mainHandler)
}
in 24..25 -> @TargetApi(24) {
Services.connectivity.registerDefaultNetworkCallback(networkCallback)
}
else -> try {

View File

@@ -77,7 +77,7 @@ class InterfaceMonitor(private val ifaceRegex: String) : UpstreamMonitor() {
callback.onAvailable(currentLinkProperties)
}
} else {
Services.connectivity.registerNetworkCallback(request, networkCallback)
Services.registerNetworkCallbackCompat(request, networkCallback)
registered = true
}
}

View File

@@ -61,7 +61,7 @@ object VpnMonitor : UpstreamMonitor() {
callback.onAvailable(currentLinkProperties)
}
} else {
Services.connectivity.registerNetworkCallback(request, networkCallback)
Services.registerNetworkCallbackCompat(request, networkCallback)
registered = true
}
}

View File

@@ -63,7 +63,7 @@ class AutoCompleteNetworkPreferenceDialogFragment : EditTextPreferenceDialogFrag
override fun onStart() {
super.onStart()
Services.connectivity.registerNetworkCallback(globalNetworkRequestBuilder().apply {
Services.registerNetworkCallbackCompat(globalNetworkRequestBuilder().apply {
removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
removeCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED)
removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)

View File

@@ -2,8 +2,12 @@ package be.mygod.vpnhotspot.util
import android.content.Context
import android.net.ConnectivityManager
import android.net.NetworkRequest
import android.net.wifi.WifiManager
import android.net.wifi.p2p.WifiP2pManager
import android.os.Build
import android.os.Handler
import android.os.Looper
import androidx.core.content.getSystemService
import timber.log.Timber
@@ -14,6 +18,7 @@ object Services {
contextInit = context
}
val mainHandler by lazy { Handler(Looper.getMainLooper()) }
val connectivity by lazy { context.getSystemService<ConnectivityManager>()!! }
val p2p by lazy {
try {
@@ -24,4 +29,8 @@ object Services {
}
}
val wifi by lazy { context.getSystemService<WifiManager>()!! }
fun registerNetworkCallbackCompat(request: NetworkRequest, networkCallback: ConnectivityManager.NetworkCallback) =
if (Build.VERSION.SDK_INT >= 26) connectivity.registerNetworkCallback(request, networkCallback, mainHandler)
else connectivity.registerNetworkCallback(request, networkCallback)
}