Use main thread for callback and add registerNetworkCallbackCompat
This commit is contained in:
@@ -6,8 +6,6 @@ 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 be.mygod.vpnhotspot.util.globalNetworkRequestBuilder
|
import be.mygod.vpnhotspot.util.globalNetworkRequestBuilder
|
||||||
import kotlinx.coroutines.GlobalScope
|
import kotlinx.coroutines.GlobalScope
|
||||||
@@ -57,9 +55,12 @@ object DefaultNetworkMonitor : UpstreamMonitor() {
|
|||||||
when (Build.VERSION.SDK_INT) {
|
when (Build.VERSION.SDK_INT) {
|
||||||
in 31..Int.MAX_VALUE -> @TargetApi(31) {
|
in 31..Int.MAX_VALUE -> @TargetApi(31) {
|
||||||
Services.connectivity.registerBestMatchingNetworkCallback(networkRequest, networkCallback,
|
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)
|
Services.connectivity.registerDefaultNetworkCallback(networkCallback)
|
||||||
}
|
}
|
||||||
else -> try {
|
else -> try {
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ class InterfaceMonitor(private val ifaceRegex: String) : UpstreamMonitor() {
|
|||||||
callback.onAvailable(currentLinkProperties)
|
callback.onAvailable(currentLinkProperties)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Services.connectivity.registerNetworkCallback(request, networkCallback)
|
Services.registerNetworkCallbackCompat(request, networkCallback)
|
||||||
registered = true
|
registered = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ object VpnMonitor : UpstreamMonitor() {
|
|||||||
callback.onAvailable(currentLinkProperties)
|
callback.onAvailable(currentLinkProperties)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Services.connectivity.registerNetworkCallback(request, networkCallback)
|
Services.registerNetworkCallbackCompat(request, networkCallback)
|
||||||
registered = true
|
registered = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ class AutoCompleteNetworkPreferenceDialogFragment : EditTextPreferenceDialogFrag
|
|||||||
|
|
||||||
override fun onStart() {
|
override fun onStart() {
|
||||||
super.onStart()
|
super.onStart()
|
||||||
Services.connectivity.registerNetworkCallback(globalNetworkRequestBuilder().apply {
|
Services.registerNetworkCallbackCompat(globalNetworkRequestBuilder().apply {
|
||||||
removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
|
removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
|
||||||
removeCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED)
|
removeCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED)
|
||||||
removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
|
removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
|
||||||
|
|||||||
@@ -2,8 +2,12 @@ package be.mygod.vpnhotspot.util
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.net.ConnectivityManager
|
import android.net.ConnectivityManager
|
||||||
|
import android.net.NetworkRequest
|
||||||
import android.net.wifi.WifiManager
|
import android.net.wifi.WifiManager
|
||||||
import android.net.wifi.p2p.WifiP2pManager
|
import android.net.wifi.p2p.WifiP2pManager
|
||||||
|
import android.os.Build
|
||||||
|
import android.os.Handler
|
||||||
|
import android.os.Looper
|
||||||
import androidx.core.content.getSystemService
|
import androidx.core.content.getSystemService
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
|
|
||||||
@@ -14,6 +18,7 @@ object Services {
|
|||||||
contextInit = context
|
contextInit = context
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val mainHandler by lazy { Handler(Looper.getMainLooper()) }
|
||||||
val connectivity by lazy { context.getSystemService<ConnectivityManager>()!! }
|
val connectivity by lazy { context.getSystemService<ConnectivityManager>()!! }
|
||||||
val p2p by lazy {
|
val p2p by lazy {
|
||||||
try {
|
try {
|
||||||
@@ -24,4 +29,8 @@ object Services {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
val wifi by lazy { context.getSystemService<WifiManager>()!! }
|
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)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user