diff --git a/README.md b/README.md index e07206131e..dc20284692 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Tailscale Android Client - + https://tailscale.com Private WireGuard® networks made easy @@ -53,6 +53,8 @@ If you installed Android Studio the tools may not be in your path. To get the correct tool path, run `make androidpath` and export the provided path in your shell. +You will also need to run `make libtailscale` to build the Tailscale AAR which is required to build the Android app. + #### Code Formatting The ktmft plugin on the default setting should be used to autoformat all Java, Kotlin diff --git a/android/src/main/java/com/tailscale/ipn/QuickToggleService.java b/android/src/main/java/com/tailscale/ipn/QuickToggleService.java index a8053a49b9..0ff8512c79 100644 --- a/android/src/main/java/com/tailscale/ipn/QuickToggleService.java +++ b/android/src/main/java/com/tailscale/ipn/QuickToggleService.java @@ -79,22 +79,18 @@ private void secureOnClick() { onTileClick(); } - private void onTileClick() { - UninitializedApp app = UninitializedApp.get(); - boolean needsToStop; - synchronized (lock) { - needsToStop = isRunning; - } - if (needsToStop) { - app.stopVPN(); - } else { - boolean vpnPrepared = App.get().getAppScopedViewModel().getVpnPrepared().getValue(); - if (vpnPrepared) { - app.startVPN(); - } else { - launchMainActivity(); - } - } + private void onTileClick() { + UninitializedApp app = UninitializedApp.get(); + boolean needsToStop; + synchronized (lock) { + needsToStop = app.isAbleToStartVPN() && isRunning; + } + if (needsToStop) { + app.stopVPN(); + } else { + app.stopVPN(); + app.startVPN(); + } } private void launchMainActivity() { diff --git a/android/src/main/java/com/tailscale/ipn/ui/viewModel/MainViewModel.kt b/android/src/main/java/com/tailscale/ipn/ui/viewModel/MainViewModel.kt index 04bf0e4b9b..6f8db4a0f2 100644 --- a/android/src/main/java/com/tailscale/ipn/ui/viewModel/MainViewModel.kt +++ b/android/src/main/java/com/tailscale/ipn/ui/viewModel/MainViewModel.kt @@ -210,6 +210,10 @@ class MainViewModel(private val appViewModel: AppViewModel) : IpnViewModel() { val currentState = Notifier.state.value if (desiredState) { + if (currentState != Ipn.State.Stopped) { + stopVPN() + } + // User wants to turn ON the VPN when { currentState != Ipn.State.Running -> showVPNPermissionLauncherIfUnauthorized()