diff --git a/README.md b/README.md index 13d6c733..bc3a2348 100644 --- a/README.md +++ b/README.md @@ -222,7 +222,6 @@ Greylisted/blacklisted APIs or internal constants: (some constants are hardcoded * `Landroid/net/TetheringManager;->EXTRA_ERRORED_TETHER:Ljava/lang/String;,sdk,system-api,test-api` * (since API 24) `Landroid/net/TetheringManager;->TETHERING_BLUETOOTH:I,sdk,system-api,test-api` * (since API 30) `Landroid/net/TetheringManager;->TETHERING_ETHERNET:I,sdk,system-api,test-api` -* (since API 30) `Landroid/net/TetheringManager;->TETHERING_NCM:I,sdk,system-api,test-api` * (since API 24) `Landroid/net/TetheringManager;->TETHERING_USB:I,sdk,system-api,test-api` * (since API 24) `Landroid/net/TetheringManager;->TETHERING_WIFI:I,sdk,system-api,test-api` * `Landroid/net/TetheringManager;->TETHER_ERROR_*:I,sdk,system-api,test-api` diff --git a/mobile/src/main/AndroidManifest.xml b/mobile/src/main/AndroidManifest.xml index e801d194..96963632 100644 --- a/mobile/src/main/AndroidManifest.xml +++ b/mobile/src/main/AndroidManifest.xml @@ -193,22 +193,6 @@ android:name="android.service.quicksettings.TOGGLEABLE_TILE" android:value="true" /> - - - - - - { TetherManager.ViewHolder(ListitemInterfaceBinding.inflate(inflater, parent, false)) } diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/manage/TetherManager.kt b/mobile/src/main/java/be/mygod/vpnhotspot/manage/TetherManager.kt index b209b2e0..4747b459 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/manage/TetherManager.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/manage/TetherManager.kt @@ -90,7 +90,8 @@ sealed class TetherManager(protected val parent: TetheringFragment) : Manager(), val data = Data() abstract val title: CharSequence abstract val tetherType: TetherType - open val isStarted: Boolean? get() = parent.enabledTypes.contains(tetherType) + open val isStarted: Boolean? get() = parent.enabledTypes.contains(tetherType) || + tetherType == TetherType.USB && parent.enabledTypes.contains(TetherType.NCM) protected open val text: CharSequence get() = baseError ?: "" protected var baseError: String? = null @@ -126,7 +127,7 @@ sealed class TetherManager(protected val parent: TetheringFragment) : Manager(), } fun updateErrorMessage(errored: List, lastErrors: Map) { - val interested = errored.filter { TetherType.ofInterface(it) == tetherType } + val interested = errored.filter { TetherType.ofInterface(it).isA(tetherType) } baseError = if (interested.isEmpty()) null else interested.joinToString("\n") { iface -> "$iface: " + try { TetheringManager.tetherErrorLookup(if (Build.VERSION.SDK_INT < 30) @Suppress("DEPRECATION") { @@ -331,15 +332,6 @@ sealed class TetherManager(protected val parent: TetheringFragment) : Manager(), override fun start() = TetheringManager.startTethering(TetheringManager.TETHERING_ETHERNET, true, this) override fun stop() = TetheringManager.stopTethering(TetheringManager.TETHERING_ETHERNET, this::onException) } - @RequiresApi(30) - class Ncm(parent: TetheringFragment) : TetherManager(parent) { - override val title get() = parent.getString(R.string.tethering_manage_ncm) - override val tetherType get() = TetherType.NCM - override val type get() = VIEW_TYPE_NCM - - override fun start() = TetheringManager.startTethering(TetheringManager.TETHERING_NCM, true, this) - override fun stop() = TetheringManager.stopTethering(TetheringManager.TETHERING_NCM, this::onException) - } @Suppress("DEPRECATION") @Deprecated("Not usable since API 26, malfunctioning on API 25") diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/manage/TetheringFragment.kt b/mobile/src/main/java/be/mygod/vpnhotspot/manage/TetheringFragment.kt index 17d0d230..5a264a9b 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/manage/TetheringFragment.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/manage/TetheringFragment.kt @@ -68,9 +68,7 @@ class TetheringFragment : Fragment(), ServiceConnection, Toolbar.OnMenuItemClick ) } @get:RequiresApi(30) - private val tetherManagers30 by lazy @TargetApi(30) { - listOf(TetherManager.Ethernet(this@TetheringFragment), TetherManager.Ncm(this@TetheringFragment)) - } + private val ethernetManager by lazy @TargetApi(30) { TetherManager.Ethernet(this@TetheringFragment) } private val wifiManagerLegacy by lazy { TetherManager.WifiLegacy(this@TetheringFragment) } var activeIfaces = emptyList() @@ -119,8 +117,8 @@ class TetheringFragment : Fragment(), ServiceConnection, Toolbar.OnMenuItemClick tetherManagers.forEach { it.updateErrorMessage(erroredIfaces, lastErrors) } } if (Build.VERSION.SDK_INT >= 30) { - list.addAll(tetherManagers30) - tetherManagers30.forEach { it.updateErrorMessage(erroredIfaces, lastErrors) } + list.add(ethernetManager) + ethernetManager.updateErrorMessage(erroredIfaces, lastErrors) } if (Build.VERSION.SDK_INT < 26) { list.add(wifiManagerLegacy) diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/manage/TetheringTileService.kt b/mobile/src/main/java/be/mygod/vpnhotspot/manage/TetheringTileService.kt index b79f1e79..df622ad7 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/manage/TetheringTileService.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/manage/TetheringTileService.kt @@ -36,7 +36,7 @@ sealed class TetheringTileService : IpNeighbourMonitoringTileService(), Tetherin protected abstract val tetherType: TetherType protected open val icon get() = tetherType.icon private var tethered: List? = null - protected val interested get() = tethered?.filter { TetherType.ofInterface(it) == tetherType } + protected val interested get() = tethered?.filter { TetherType.ofInterface(it).isA(tetherType) } protected var binder: TetheringService.Binder? = null private val receiver = broadcastReceiver { _, intent -> @@ -228,14 +228,6 @@ sealed class TetheringTileService : IpNeighbourMonitoringTileService(), Tetherin override fun start() = TetheringManager.startTethering(TetheringManager.TETHERING_ETHERNET, true, this) override fun stop() = TetheringManager.stopTethering(TetheringManager.TETHERING_ETHERNET, this::onException) } - @RequiresApi(30) - class Ncm : TetheringTileService() { - override val labelString get() = R.string.tethering_manage_ncm - override val tetherType get() = TetherType.NCM - - override fun start() = TetheringManager.startTethering(TetheringManager.TETHERING_NCM, true, this) - override fun stop() = TetheringManager.stopTethering(TetheringManager.TETHERING_NCM, this::onException) - } @Suppress("DEPRECATION") @Deprecated("Not usable since API 25") diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/net/TetherType.kt b/mobile/src/main/java/be/mygod/vpnhotspot/net/TetherType.kt index b6bb2092..2bdd1549 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/net/TetherType.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/net/TetherType.kt @@ -28,6 +28,8 @@ enum class TetherType(@DrawableRes val icon: Int) { else -> false } + fun isA(other: TetherType) = this == other || other == USB && this == NCM + companion object : TetheringManager.TetheringEventCallback { private lateinit var usbRegexs: List private lateinit var wifiRegexs: List diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/net/TetheringManager.kt b/mobile/src/main/java/be/mygod/vpnhotspot/net/TetheringManager.kt index a701556f..e8b75748 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/net/TetheringManager.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/net/TetheringManager.kt @@ -151,13 +151,6 @@ object TetheringManager { */ @RequiresApi(24) const val TETHERING_BLUETOOTH = 2 - /** - * Ncm local tethering type. - * - * @see startTethering - */ - @RequiresApi(30) - const val TETHERING_NCM = 4 /** * Ethernet tethering type. *