summaryrefslogtreecommitdiffhomepage
path: root/android/service
diff options
context:
space:
mode:
authorDavid Göransson <david.goransson90@gmail.com>2023-11-23 15:18:43 +0100
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2023-11-27 12:11:33 +0100
commite1bf8a4e5891f067a2bc11fdabe2303d442fe354 (patch)
tree4999601064b9b1a82f752c7fbcc41ffa56bf6971 /android/service
parent2e41c80afb390a5f4e696f31a273a11417ffaefe (diff)
downloadmullvadvpn-e1bf8a4e5891f067a2bc11fdabe2303d442fe354.tar.xz
mullvadvpn-e1bf8a4e5891f067a2bc11fdabe2303d442fe354.zip
Fix crash with auto-connect and no permission
Diffstat (limited to 'android/service')
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt24
1 files changed, 19 insertions, 5 deletions
diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt
index b360613eaa..dad6ea5b56 100644
--- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt
+++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/ForegroundNotificationManager.kt
@@ -1,6 +1,9 @@
package net.mullvad.mullvadvpn.service
import android.app.Service
+import android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED
+import android.net.VpnService
+import android.os.Build
import kotlin.properties.Delegates.observable
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
@@ -90,11 +93,22 @@ class ForegroundNotificationManager(
}
fun showOnForeground() {
- service.startForeground(
- TunnelStateNotification.NOTIFICATION_ID,
- tunnelStateNotification.build()
- )
-
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
+ if (VpnService.prepare(service) == null) {
+ service.startForeground(
+ TunnelStateNotification.NOTIFICATION_ID,
+ tunnelStateNotification.build(),
+ FOREGROUND_SERVICE_TYPE_SYSTEM_EXEMPTED
+ )
+ } else {
+ return
+ }
+ } else {
+ service.startForeground(
+ TunnelStateNotification.NOTIFICATION_ID,
+ tunnelStateNotification.build(),
+ )
+ }
onForeground = true
}