From 07ce4f4e254423569a2ddbd1467c74516442f6b5 Mon Sep 17 00:00:00 2001 From: Mygod Date: Thu, 11 Jul 2019 09:54:42 +0800 Subject: [PATCH] Allow user to exit app easily --- .../main/java/be/mygod/vpnhotspot/RoutingManager.kt | 9 ++++----- .../be/mygod/vpnhotspot/SettingsPreferenceFragment.kt | 11 +++++++++-- mobile/src/main/res/values-zh-rCN/strings.xml | 1 + mobile/src/main/res/values/strings.xml | 1 + 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/RoutingManager.kt b/mobile/src/main/java/be/mygod/vpnhotspot/RoutingManager.kt index 22ba0fa5..c74dd731 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/RoutingManager.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/RoutingManager.kt @@ -21,17 +21,16 @@ abstract class RoutingManager(private val caller: Any, val downstream: String, p private val active = mutableMapOf() - fun clean() { + fun clean(reinit: Boolean = true) { for (manager in active.values) manager.routing?.stop() - val cleaned = try { + try { Routing.clean() - true } catch (e: RuntimeException) { Timber.d(e) SmartSnackbar.make(e).show() - false + return } - if (cleaned) for (manager in active.values) manager.initRouting() + if (reinit) for (manager in active.values) manager.initRouting() } } diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/SettingsPreferenceFragment.kt b/mobile/src/main/java/be/mygod/vpnhotspot/SettingsPreferenceFragment.kt index e1b5986f..9f4bc4fc 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/SettingsPreferenceFragment.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/SettingsPreferenceFragment.kt @@ -17,13 +17,14 @@ import be.mygod.vpnhotspot.preference.AlwaysAutoCompleteEditTextPreferenceDialog import be.mygod.vpnhotspot.preference.SharedPreferenceDataStore import be.mygod.vpnhotspot.util.RootSession import be.mygod.vpnhotspot.util.launchUrl -import be.mygod.vpnhotspot.widget.SmartSnackbar +import com.google.android.material.snackbar.Snackbar import timber.log.Timber import java.io.File import java.io.IOException import java.io.PrintWriter import java.net.NetworkInterface import java.net.SocketException +import kotlin.system.exitProcess class SettingsPreferenceFragment : PreferenceFragmentCompat() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { @@ -44,7 +45,13 @@ class SettingsPreferenceFragment : PreferenceFragmentCompat() { true } findPreference(IpMonitor.KEY)!!.setOnPreferenceChangeListener { _, _ -> - SmartSnackbar.make(R.string.settings_restart_required).show() + Snackbar.make(requireView(), R.string.settings_restart_required, Snackbar.LENGTH_LONG).apply { + setAction(R.string.settings_exit_app) { + RoutingManager.clean(false) + RootSession.trimMemory() + exitProcess(0) + } + }.show() true } findPreference("misc.logcat")!!.setOnPreferenceClickListener { diff --git a/mobile/src/main/res/values-zh-rCN/strings.xml b/mobile/src/main/res/values-zh-rCN/strings.xml index 17eaee4f..57e2c704 100644 --- a/mobile/src/main/res/values-zh-rCN/strings.xml +++ b/mobile/src/main/res/values-zh-rCN/strings.xml @@ -113,6 +113,7 @@ 请给我钱 PayPal, Flattr 等其他方式… 重启应用以应用新的设置。 + 退出 VPN 共享已启用 VPN 共享服务 diff --git a/mobile/src/main/res/values/strings.xml b/mobile/src/main/res/values/strings.xml index bb1eb044..198e8a92 100644 --- a/mobile/src/main/res/values/strings.xml +++ b/mobile/src/main/res/values/strings.xml @@ -119,6 +119,7 @@ I love money PayPal, Flattr, more… Restart this app to apply this setting. + Exit VPN tethering active VPN Tethering Service