summaryrefslogtreecommitdiffhomepage
path: root/android/app/src
diff options
context:
space:
mode:
authorAlbin <albin@mullvad.net>2022-09-22 16:57:23 +0200
committerAlbin <albin@mullvad.net>2022-09-26 11:43:52 +0200
commit8e9bb97d28b1e2d5fdd166d4ea8f0d281fb9c4b7 (patch)
treeb3b45ac440f757f5e0a650320f95879f5efeef5c /android/app/src
parentc8fae17c22c66062f076e070d761e6866437652d (diff)
downloadmullvadvpn-8e9bb97d28b1e2d5fdd166d4ea8f0d281fb9c4b7.tar.xz
mullvadvpn-8e9bb97d28b1e2d5fdd166d4ea8f0d281fb9c4b7.zip
Fix pending intent flags
Diffstat (limited to 'android/app/src')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/TunnelStateNotification.kt21
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/SdkUtils.kt9
3 files changed, 25 insertions, 11 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt
index 3181f2ee95..ae4fcc75ff 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/AccountExpiryNotification.kt
@@ -15,6 +15,7 @@ import net.mullvad.mullvadvpn.service.MullvadDaemon
import net.mullvad.mullvadvpn.service.endpoint.AccountCache
import net.mullvad.mullvadvpn.util.Intermittent
import net.mullvad.mullvadvpn.util.JobTracker
+import net.mullvad.mullvadvpn.util.SdkUtils
import org.joda.time.DateTime
import org.joda.time.Duration
@@ -94,10 +95,9 @@ class AccountExpiryNotification(
val url = jobTracker.runOnBackground {
Uri.parse("$buyMoreTimeUrl?token=${daemon.await().getWwwAuthToken()}")
}
-
val intent = Intent(Intent.ACTION_VIEW, url)
- val flags = PendingIntent.FLAG_UPDATE_CURRENT
- val pendingIntent = PendingIntent.getActivity(context, 1, intent, flags)
+ val pendingIntent =
+ PendingIntent.getActivity(context, 1, intent, SdkUtils.getSupportedPendingIntentFlags())
return channel.buildNotification(pendingIntent, format(expiry, remainingTime))
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/TunnelStateNotification.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/TunnelStateNotification.kt
index 94002ba735..aee8115c1e 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/TunnelStateNotification.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/notifications/TunnelStateNotification.kt
@@ -10,6 +10,7 @@ import kotlin.properties.Delegates.observable
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.model.TunnelState
import net.mullvad.mullvadvpn.ui.MainActivity
+import net.mullvad.mullvadvpn.util.SdkUtils
import net.mullvad.talpid.tunnel.ActionAfterDisconnect
class TunnelStateNotification(val context: Context) {
@@ -85,10 +86,12 @@ class TunnelStateNotification(val context: Context) {
val intent = Intent(context, MainActivity::class.java)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP)
.setAction(Intent.ACTION_MAIN)
-
- val pendingIntent =
- PendingIntent.getActivity(context, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT)
-
+ val pendingIntent = PendingIntent.getActivity(
+ context,
+ 1,
+ intent,
+ SdkUtils.getSupportedPendingIntentFlags()
+ )
val actions = if (showAction) {
listOf(buildAction())
} else {
@@ -101,11 +104,13 @@ class TunnelStateNotification(val context: Context) {
private fun buildAction(): NotificationCompat.Action {
val action = TunnelStateNotificationAction.from(tunnelState)
val label = context.getString(action.text)
-
val intent = Intent(action.key).setPackage("net.mullvad.mullvadvpn")
- val flags = PendingIntent.FLAG_UPDATE_CURRENT
-
- val pendingIntent = PendingIntent.getForegroundService(context, 1, intent, flags)
+ val pendingIntent = PendingIntent.getForegroundService(
+ context,
+ 1,
+ intent,
+ SdkUtils.getSupportedPendingIntentFlags()
+ )
return NotificationCompat.Action(action.icon, label, pendingIntent)
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/SdkUtils.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/SdkUtils.kt
index b147c449ea..7f1ba6bd74 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/SdkUtils.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/SdkUtils.kt
@@ -1,10 +1,19 @@
package net.mullvad.mullvadvpn.util
+import android.app.PendingIntent
import android.net.VpnService
import android.os.Build
import android.service.quicksettings.Tile
object SdkUtils {
+ fun getSupportedPendingIntentFlags(): Int {
+ return if (Build.VERSION.SDK_INT > Build.VERSION_CODES.S) {
+ PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE
+ } else {
+ PendingIntent.FLAG_UPDATE_CURRENT
+ }
+ }
+
fun VpnService.Builder.setMeteredIfSupported(isMetered: Boolean) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q) {
this.setMetered(isMetered)