diff options
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/AndroidManifest.xml | 3 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt | 7 |
2 files changed, 9 insertions, 1 deletions
diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml index 0093dbcb21..6295231f64 100644 --- a/android/src/main/AndroidManifest.xml +++ b/android/src/main/AndroidManifest.xml @@ -36,6 +36,9 @@ <intent-filter> <action android:name="net.mullvad.mullvadvpn.disconnect_action" /> </intent-filter> + <intent-filter> + <action android:name="net.mullvad.mullvadvpn.quit_action" /> + </intent-filter> </service> <service android:name="net.mullvad.mullvadvpn.service.MullvadTileService" android:label="@string/app_name" diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt index 5034d561a1..439216e897 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt @@ -28,6 +28,7 @@ class MullvadVpnService : TalpidVpnService() { val KEY_CONNECT_ACTION = "net.mullvad.mullvadvpn.connect_action" val KEY_DISCONNECT_ACTION = "net.mullvad.mullvadvpn.disconnect_action" + val KEY_QUIT_ACTION = "net.mullvad.mullvadvpn.quit_action" init { System.loadLibrary("mullvad_jni") @@ -99,6 +100,7 @@ class MullvadVpnService : TalpidVpnService() { override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { Log.d(TAG, "Starting service") val startResult = super.onStartCommand(intent, flags, startId) + var quitCommand = false if (!keyguardManager.isDeviceLocked) { val action = intent?.action @@ -107,10 +109,13 @@ class MullvadVpnService : TalpidVpnService() { pendingAction = PendingAction.Connect } else if (action == KEY_DISCONNECT_ACTION) { pendingAction = PendingAction.Disconnect + } else if (action == KEY_QUIT_ACTION && !notificationManager.onForeground) { + quitCommand = true + stop() } } - if (shouldStop) { + if (shouldStop && !quitCommand) { shouldStop = false if (isStopping) { |
