diff options
| author | David Göransson <david.goransson90@gmail.com> | 2023-11-23 15:18:43 +0100 |
|---|---|---|
| committer | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2023-11-27 12:11:33 +0100 |
| commit | e1bf8a4e5891f067a2bc11fdabe2303d442fe354 (patch) | |
| tree | 4999601064b9b1a82f752c7fbcc41ffa56bf6971 /android/service | |
| parent | 2e41c80afb390a5f4e696f31a273a11417ffaefe (diff) | |
| download | mullvadvpn-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.kt | 24 |
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 } |
