diff options
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/VpnPermission.kt | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/VpnPermission.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/VpnPermission.kt index b92dab3f98..9602ec7a3b 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/VpnPermission.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/VpnPermission.kt @@ -1,14 +1,19 @@ package net.mullvad.mullvadvpn.service.endpoint +import android.app.UiModeManager import android.content.Context +import android.content.Context.UI_MODE_SERVICE import android.content.Intent +import android.content.res.Configuration.UI_MODE_TYPE_TELEVISION import android.net.VpnService import net.mullvad.mullvadvpn.ipc.Event import net.mullvad.mullvadvpn.ipc.Request import net.mullvad.mullvadvpn.ui.MainActivity +import net.mullvad.mullvadvpn.ui.activities.TVActivity import net.mullvad.mullvadvpn.util.Intermittent class VpnPermission(private val context: Context, private val endpoint: ServiceEndpoint) { + private val activityClass = discoverActivityClass() private val isGranted = Intermittent<Boolean>() var waitingForResponse = false @@ -27,7 +32,7 @@ class VpnPermission(private val context: Context, private val endpoint: ServiceE if (intent == null) { isGranted.update(true) } else { - val activityIntent = Intent(context, MainActivity::class.java).apply { + val activityIntent = Intent(context, activityClass).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) } @@ -41,4 +46,14 @@ class VpnPermission(private val context: Context, private val endpoint: ServiceE return isGranted.await() } + + private fun discoverActivityClass(): Class<out MainActivity> { + val uiModeManager = context.getSystemService(UI_MODE_SERVICE) as UiModeManager + + return if (uiModeManager.currentModeType == UI_MODE_TYPE_TELEVISION) { + TVActivity::class.java + } else { + MainActivity::class.java + } + } } |
