Fix OEM bugs on Android 6
This commit is contained in:
@@ -17,7 +17,7 @@ object DefaultNetworkMonitor : UpstreamMonitor() {
|
|||||||
* Unfortunately registerDefaultNetworkCallback is going to return VPN interface since Android P DP1:
|
* Unfortunately registerDefaultNetworkCallback is going to return VPN interface since Android P DP1:
|
||||||
* https://android.googlesource.com/platform/frameworks/base/+/dda156ab0c5d66ad82bdcf76cda07cbc0a9c8a2e
|
* https://android.googlesource.com/platform/frameworks/base/+/dda156ab0c5d66ad82bdcf76cda07cbc0a9c8a2e
|
||||||
*/
|
*/
|
||||||
private val networkRequest = NetworkRequest.Builder()
|
private val networkRequest = networkRequestBuilder()
|
||||||
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
|
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
|
||||||
.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
|
.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
|
||||||
.build()
|
.build()
|
||||||
|
|||||||
@@ -2,6 +2,9 @@ package be.mygod.vpnhotspot.net.monitor
|
|||||||
|
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
import android.net.LinkProperties
|
import android.net.LinkProperties
|
||||||
|
import android.net.NetworkCapabilities
|
||||||
|
import android.net.NetworkRequest
|
||||||
|
import android.os.Build
|
||||||
import be.mygod.vpnhotspot.App.Companion.app
|
import be.mygod.vpnhotspot.App.Companion.app
|
||||||
import kotlinx.coroutines.GlobalScope
|
import kotlinx.coroutines.GlobalScope
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@@ -22,6 +25,13 @@ abstract class UpstreamMonitor {
|
|||||||
}
|
}
|
||||||
private var monitor = generateMonitor()
|
private var monitor = generateMonitor()
|
||||||
|
|
||||||
|
fun networkRequestBuilder() = NetworkRequest.Builder().apply {
|
||||||
|
if (Build.VERSION.SDK_INT == 23) { // workarounds for OEM bugs
|
||||||
|
removeCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)
|
||||||
|
removeCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun registerCallback(callback: Callback) = synchronized(this) { monitor.registerCallback(callback) }
|
fun registerCallback(callback: Callback) = synchronized(this) { monitor.registerCallback(callback) }
|
||||||
fun unregisterCallback(callback: Callback) = synchronized(this) { monitor.unregisterCallback(callback) }
|
fun unregisterCallback(callback: Callback) = synchronized(this) { monitor.unregisterCallback(callback) }
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import kotlinx.coroutines.launch
|
|||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
|
|
||||||
object VpnMonitor : UpstreamMonitor() {
|
object VpnMonitor : UpstreamMonitor() {
|
||||||
private val request = NetworkRequest.Builder()
|
private val request = networkRequestBuilder()
|
||||||
.addTransportType(NetworkCapabilities.TRANSPORT_VPN)
|
.addTransportType(NetworkCapabilities.TRANSPORT_VPN)
|
||||||
.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
|
.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
|
||||||
.build()
|
.build()
|
||||||
|
|||||||
Reference in New Issue
Block a user