From 86c847d12ed7036a34a28c5f12c54b25ce100b6c Mon Sep 17 00:00:00 2001 From: Mygod Date: Fri, 29 May 2020 06:34:10 +0800 Subject: [PATCH] Switch to MonitorRoot as default for API 30+ --- .../java/be/mygod/vpnhotspot/net/monitor/IpMonitor.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/net/monitor/IpMonitor.kt b/mobile/src/main/java/be/mygod/vpnhotspot/net/monitor/IpMonitor.kt index 3154a4ea..d2c719c2 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/net/monitor/IpMonitor.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/net/monitor/IpMonitor.kt @@ -2,6 +2,7 @@ package be.mygod.vpnhotspot.net.monitor import android.system.ErrnoException import android.system.OsConstants +import androidx.core.os.BuildCompat import be.mygod.vpnhotspot.App.Companion.app import be.mygod.vpnhotspot.R import be.mygod.vpnhotspot.util.RootSession @@ -19,11 +20,17 @@ abstract class IpMonitor : Runnable { const val KEY = "service.ipMonitor" // https://android.googlesource.com/platform/external/iproute2/+/7f7a711/lib/libnetlink.c#493 private val errorMatcher = "Dump (was interrupted and may be inconsistent.|terminated)$".toRegex() - private val currentMode get() = Mode.valueOf(app.pref.getString(KEY, Mode.Poll.toString()) ?: "") + private val currentMode get() = Mode.valueOf(app.pref.getString(KEY, (if (BuildCompat.isAtLeastR()) + Mode.MonitorRoot else @Suppress("DEPRECATION") Mode.Poll).toString()) ?: "") } enum class Mode(val isMonitor: Boolean = false) { - Monitor(true), MonitorRoot(true), Poll, PollRoot + @Deprecated("No longer usable on API 30+") + Monitor(true), + MonitorRoot(true), + @Deprecated("No longer usable on API 30+") + Poll, + PollRoot, } private class FlushFailure : RuntimeException()