diff --git a/mobile/src/main/AndroidManifest.xml b/mobile/src/main/AndroidManifest.xml
index eff53f0c..9afd03a5 100644
--- a/mobile/src/main/AndroidManifest.xml
+++ b/mobile/src/main/AndroidManifest.xml
@@ -169,9 +169,11 @@
+ android:directBootAware="true"
+ tools:ignore="MissingClass"/>
diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/MainActivity.kt b/mobile/src/main/java/be/mygod/vpnhotspot/MainActivity.kt
index 274d9402..2763efdc 100644
--- a/mobile/src/main/java/be/mygod/vpnhotspot/MainActivity.kt
+++ b/mobile/src/main/java/be/mygod/vpnhotspot/MainActivity.kt
@@ -7,7 +7,6 @@ import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
-import androidx.fragment.app.replace
import androidx.lifecycle.observe
import be.mygod.vpnhotspot.client.ClientViewModel
import be.mygod.vpnhotspot.client.ClientsFragment
@@ -28,7 +27,7 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.navigation.setOnNavigationItemSelectedListener(this)
- if (savedInstanceState == null) displayFragment()
+ if (savedInstanceState == null) displayFragment(TetheringFragment())
val model by viewModels()
if (RepeaterService.supported) ServiceForegroundConnector(this, model, RepeaterService::class)
model.clients.observe(this) { clients ->
@@ -49,29 +48,29 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
R.id.navigation_clients -> {
if (!item.isChecked) {
item.isChecked = true
- displayFragment()
+ displayFragment(ClientsFragment())
}
true
}
R.id.navigation_tethering -> {
if (!item.isChecked) {
item.isChecked = true
- displayFragment()
+ displayFragment(TetheringFragment())
}
true
}
R.id.navigation_settings -> {
if (!item.isChecked) {
item.isChecked = true
- displayFragment()
+ displayFragment(SettingsPreferenceFragment())
}
true
}
else -> false
}
- private inline fun displayFragment() =
- supportFragmentManager.beginTransaction().replace(R.id.fragmentHolder).commitAllowingStateLoss()
+ private fun displayFragment(fragment: Fragment) =
+ supportFragmentManager.beginTransaction().replace(R.id.fragmentHolder, fragment).commitAllowingStateLoss()
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/net/monitor/UpstreamMonitor.kt b/mobile/src/main/java/be/mygod/vpnhotspot/net/monitor/UpstreamMonitor.kt
index 754ba73f..1ccc74ac 100644
--- a/mobile/src/main/java/be/mygod/vpnhotspot/net/monitor/UpstreamMonitor.kt
+++ b/mobile/src/main/java/be/mygod/vpnhotspot/net/monitor/UpstreamMonitor.kt
@@ -5,7 +5,6 @@ import android.net.LinkProperties
import be.mygod.vpnhotspot.App.Companion.app
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
-import java.net.InetAddress
import java.util.*
import java.util.concurrent.ConcurrentHashMap
@@ -72,10 +71,6 @@ abstract class UpstreamMonitor {
val callbacks = Collections.newSetFromMap(ConcurrentHashMap())
protected abstract val currentLinkProperties: LinkProperties?
open val currentIface: String? get() = currentLinkProperties?.interfaceName
- /**
- * There's no need for overriding currentDns for now.
- */
- val currentDns: List get() = currentLinkProperties?.dnsServers ?: emptyList()
protected abstract fun registerCallbackLocked(callback: Callback)
abstract fun destroyLocked()
diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/WifiP2pManagerHelper.kt b/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/WifiP2pManagerHelper.kt
index b3d4e956..5d1c60c5 100644
--- a/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/WifiP2pManagerHelper.kt
+++ b/mobile/src/main/java/be/mygod/vpnhotspot/net/wifi/WifiP2pManagerHelper.kt
@@ -112,7 +112,9 @@ object WifiP2pManagerHelper {
*
* Source: https://android.googlesource.com/platform/frameworks/base/+/android-4.2_r1/wifi/java/android/net/wifi/p2p/WifiP2pGroup.java#253
*/
- private val getNetworkId by lazy { WifiP2pGroup::class.java.getDeclaredMethod("getNetworkId") }
+ private val getNetworkId by lazy @SuppressLint("DiscouragedPrivateApi") {
+ WifiP2pGroup::class.java.getDeclaredMethod("getNetworkId")
+ }
@Deprecated("No longer used since API 29")
val WifiP2pGroup.netId get() = getNetworkId.invoke(this) as Int
}
diff --git a/mobile/src/main/res/layout/listitem_repeater.xml b/mobile/src/main/res/layout/listitem_repeater.xml
index 3e4969dc..32320852 100644
--- a/mobile/src/main/res/layout/listitem_repeater.xml
+++ b/mobile/src/main/res/layout/listitem_repeater.xml
@@ -75,7 +75,7 @@
android:background="?android:attr/selectableItemBackground"
android:padding="16dp"
android:onClick="@{_ -> data.wps()}"
- android:visibility="@{data.serviceStarted && WifiP2pManagerHelper.startWps != null}">
+ android:visibility="@{data.serviceStarted && WifiP2pManagerHelper.getStartWps() != null}">