From f851ebbde5a9cbffd4a4199d5a53be844fff5e68 Mon Sep 17 00:00:00 2001 From: Hiddify Date: Fri, 16 Feb 2024 17:36:44 +0100 Subject: [PATCH] fix: bug in change interface listener --- .../hiddify/bg/DefaultNetworkMonitor.kt | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/android/app/src/main/kotlin/com/hiddify/hiddify/bg/DefaultNetworkMonitor.kt b/android/app/src/main/kotlin/com/hiddify/hiddify/bg/DefaultNetworkMonitor.kt index 1c143add..cc479378 100644 --- a/android/app/src/main/kotlin/com/hiddify/hiddify/bg/DefaultNetworkMonitor.kt +++ b/android/app/src/main/kotlin/com/hiddify/hiddify/bg/DefaultNetworkMonitor.kt @@ -1,4 +1,5 @@ package com.hiddify.hiddify.bg +import java.net.NetworkInterface import android.net.Network import android.os.Build @@ -35,9 +36,23 @@ object DefaultNetworkMonitor { newNetwork: Network? ) { val listener = listener ?: return - val link = Application.connectivity.getLinkProperties(newNetwork ?: return) ?: return - listener.updateDefaultInterface(link.interfaceName, -1) + if (newNetwork != null) { + val interfaceName = + (Application.connectivity.getLinkProperties(newNetwork) ?: return).interfaceName + for (times in 0 until 10) { + var interfaceIndex: Int + try { + interfaceIndex = NetworkInterface.getByName(interfaceName).index + } catch (e: Exception) { + Thread.sleep(100) + continue + } + listener.updateDefaultInterface(interfaceName, interfaceIndex) + break + } + } else { + listener.updateDefaultInterface("", -1) + } } - } \ No newline at end of file