Skip to content

Commit

Permalink
Refine finding default Wi-Fi interface
Browse files Browse the repository at this point in the history
  • Loading branch information
Mygod committed Jan 4, 2018
1 parent dc2db04 commit 7e30ddf
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 6 deletions.
17 changes: 16 additions & 1 deletion mobile/src/main/java/be/mygod/vpnhotspot/App.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,11 @@ package be.mygod.vpnhotspot
import android.app.Application
import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.SharedPreferences
import android.content.res.Resources
import android.os.Build
import android.preference.PreferenceManager
import java.net.NetworkInterface

class App : Application() {
companion object {
Expand All @@ -17,7 +20,19 @@ class App : Application() {
if (Build.VERSION.SDK_INT >= 26) getSystemService(NotificationManager::class.java)
.createNotificationChannel(NotificationChannel(HotspotService.CHANNEL,
"Hotspot Service", NotificationManager.IMPORTANCE_LOW))
pref = PreferenceManager.getDefaultSharedPreferences(this)
val wifiRegexes = resources.getStringArray(Resources.getSystem()
.getIdentifier("config_tether_wifi_regexs", "array", "android"))
.map { it.toPattern() }
wifiInterfaces = NetworkInterface.getNetworkInterfaces().asSequence()
.map { it.name }
.filter { ifname -> wifiRegexes.any { it.matcher(ifname).matches() } }
.sorted().toList().toTypedArray()
val wifiInterface = wifiInterfaces.singleOrNull()
if (wifiInterface != null && pref.getString(HotspotService.KEY_WIFI, null) == null)
pref.edit().putString(HotspotService.KEY_WIFI, wifiInterface).apply()
}

val pref by lazy { PreferenceManager.getDefaultSharedPreferences(this) }
lateinit var pref: SharedPreferences
lateinit var wifiInterfaces: Array<String>
}
8 changes: 3 additions & 5 deletions mobile/src/main/java/be/mygod/vpnhotspot/SettingsFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import android.support.customtabs.CustomTabsIntent
import android.support.v4.content.ContextCompat
import android.support.v4.content.LocalBroadcastManager
import android.support.v7.preference.Preference
import be.mygod.vpnhotspot.App.Companion.app
import be.mygod.vpnhotspot.preference.AlwaysAutoCompleteEditTextPreferenceDialogFragmentCompat
import com.takisoft.fix.support.v7.preference.PreferenceFragmentCompatDividers
import java.net.NetworkInterface
Expand Down Expand Up @@ -56,11 +57,8 @@ class SettingsFragment : PreferenceFragmentCompatDividers(), ServiceConnection {
.filter { it.isUp && !it.isLoopback && it.interfaceAddresses.isNotEmpty() }
.map { it.name }.sorted().toList().toTypedArray()))
HotspotService.KEY_WIFI -> displayPreferenceDialog(
AlwaysAutoCompleteEditTextPreferenceDialogFragmentCompat(), HotspotService.KEY_WIFI,
Bundle().put(AlwaysAutoCompleteEditTextPreferenceDialogFragmentCompat.KEY_SUGGESTIONS,
NetworkInterface.getNetworkInterfaces().asSequence()
.filter { !it.isLoopback } // wlan0 is down in airplane mode
.map { it.name }.sorted().toList().toTypedArray()))
AlwaysAutoCompleteEditTextPreferenceDialogFragmentCompat(), HotspotService.KEY_WIFI, Bundle()
.put(AlwaysAutoCompleteEditTextPreferenceDialogFragmentCompat.KEY_SUGGESTIONS, app.wifiInterfaces))
else -> super.onDisplayPreferenceDialog(preference)
}

Expand Down

0 comments on commit 7e30ddf

Please sign in to comment.