diff options
| author | Albin <albin@mullvad.net> | 2022-01-27 13:32:30 +0100 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2022-01-27 13:32:30 +0100 |
| commit | 6e073cf040c3376ad191a7621301ec7f10ce71eb (patch) | |
| tree | 6b2461c825f08aa526225ebfbb66d2014ada4f02 | |
| parent | c81d787c9588800688930c88d0a69fa3ee6a06e9 (diff) | |
| parent | edc60b2e0c19a83d285491d0e8b86c92f96f4e86 (diff) | |
| download | mullvadvpn-6e073cf040c3376ad191a7621301ec7f10ce71eb.tar.xz mullvadvpn-6e073cf040c3376ad191a7621301ec7f10ce71eb.zip | |
Merge branch 'fix-android-tv-startup-crash'
5 files changed, 8 insertions, 35 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index c9465a5616..db4c87326c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -100,6 +100,7 @@ Line wrap the file at 100 chars. Th - Fix issue with the user getting kicked out of certain views in settings when the app is brought to the foreground. - Fix "Secure my connection" action not always visible in tunnel state notification. - Fix tunnel state notification sometimes re-appearing after being dismissed. +- Fix app sometimes crashing during startup on Android TVs. ### Security - Restrict which applications are allowed to communicate with the API while in a blocking state. diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 5216de46d2..2cb2809891 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -28,27 +28,17 @@ android:label="@string/app_name" android:launchMode="singleTask" android:configChanges="orientation|screenSize|screenLayout" - android:screenOrientation="sensorPortrait" + android:screenOrientation="locked" android:windowSoftInputMode="adjustPan"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> + <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES" /> </intent-filter> </activity> - <activity android:name="net.mullvad.mullvadvpn.ui.activities.TVActivity" - android:label="@string/app_name" - android:launchMode="singleTask" - android:configChanges="orientation|screenSize|screenLayout" - android:screenOrientation="sensor" - android:windowSoftInputMode="adjustPan"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> - </intent-filter> - </activity> <service android:name="net.mullvad.mullvadvpn.service.MullvadVpnService" android:permission="android.permission.BIND_VPN_SERVICE" android:process=":mullvadvpn_daemon" diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/VpnPermission.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/VpnPermission.kt index 9602ec7a3b..b92dab3f98 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/VpnPermission.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/VpnPermission.kt @@ -1,19 +1,14 @@ 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 @@ -32,7 +27,7 @@ class VpnPermission(private val context: Context, private val endpoint: ServiceE if (intent == null) { isGranted.update(true) } else { - val activityIntent = Intent(context, activityClass).apply { + val activityIntent = Intent(context, MainActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) } @@ -46,14 +41,4 @@ 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 - } - } } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt index dfc541d8d5..bda1055c76 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt @@ -64,8 +64,10 @@ open class MainActivity : FragmentActivity() { var backButtonHandler: (() -> Boolean)? = null override fun onCreate(savedInstanceState: Bundle?) { - if (deviceIsTv) { - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE) + requestedOrientation = if (deviceIsTv) { + ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE + } else { + ActivityInfo.SCREEN_ORIENTATION_PORTRAIT } super.onCreate(savedInstanceState) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/activities/TVActivity.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/activities/TVActivity.kt deleted file mode 100644 index c83c47e7cd..0000000000 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/activities/TVActivity.kt +++ /dev/null @@ -1,5 +0,0 @@ -package net.mullvad.mullvadvpn.ui.activities - -import net.mullvad.mullvadvpn.ui.MainActivity - -class TVActivity : MainActivity() |
