summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorAlbin <albin@mullvad.net>2022-09-26 11:58:18 +0200
committerAlbin <albin@mullvad.net>2022-09-26 11:58:18 +0200
commitf864c39cf7da27d772377f493b730a8a1f9a2298 (patch)
treeb3b45ac440f757f5e0a650320f95879f5efeef5c /android
parent3f0713e89ad5792c2b026acc5621e0dc0386103d (diff)
parent8e9bb97d28b1e2d5fdd166d4ea8f0d281fb9c4b7 (diff)
downloadmullvadvpn-f864c39cf7da27d772377f493b730a8a1f9a2298.tar.xz
mullvadvpn-f864c39cf7da27d772377f493b730a8a1f9a2298.zip
Merge branch 'bump-android-sdk-version'
Diffstat (limited to 'android')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadTileService.kt12
-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.kt28
-rw-r--r--android/app/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt8
-rw-r--r--android/buildSrc/src/main/kotlin/Versions.kt6
-rw-r--r--android/gradle/verification-metadata.xml41
7 files changed, 75 insertions, 47 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadTileService.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadTileService.kt
index ecbc117f63..e26ae28697 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadTileService.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadTileService.kt
@@ -2,7 +2,6 @@ package net.mullvad.mullvadvpn.service
import android.content.Intent
import android.graphics.drawable.Icon
-import android.os.Build
import android.service.quicksettings.Tile
import android.service.quicksettings.TileService
import android.util.Log
@@ -21,6 +20,7 @@ import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.ipc.ServiceConnection
import net.mullvad.mullvadvpn.model.ServiceResult
import net.mullvad.mullvadvpn.model.TunnelState
+import net.mullvad.mullvadvpn.util.SdkUtils.setSubtitleIfSupported
import net.mullvad.talpid.tunnel.ActionAfterDisconnect
class MullvadTileService : TileService() {
@@ -130,17 +130,11 @@ class MullvadTileService : TileService() {
if (newState == Tile.STATE_ACTIVE) {
state = Tile.STATE_ACTIVE
icon = securedIcon
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
- subtitle = resources.getText(R.string.secured)
- }
+ setSubtitleIfSupported(resources.getText(R.string.secured))
} else {
state = Tile.STATE_INACTIVE
icon = unsecuredIcon
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
- subtitle = resources.getText(R.string.unsecured)
- }
+ setSubtitleIfSupported(resources.getText(R.string.unsecured))
}
updateTile()
}
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
new file mode 100644
index 0000000000..7f1ba6bd74
--- /dev/null
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/SdkUtils.kt
@@ -0,0 +1,28 @@
+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)
+ }
+ }
+
+ fun Tile.setSubtitleIfSupported(subtitleText: CharSequence) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
+ this.subtitle = subtitleText
+ }
+ }
+}
diff --git a/android/app/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt b/android/app/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
index 7a9160c684..4203d0b0a1 100644
--- a/android/app/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
+++ b/android/app/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
@@ -1,12 +1,12 @@
package net.mullvad.talpid
import android.net.VpnService
-import android.os.Build
import android.os.ParcelFileDescriptor
import java.net.Inet4Address
import java.net.Inet6Address
import java.net.InetAddress
import kotlin.properties.Delegates.observable
+import net.mullvad.mullvadvpn.util.SdkUtils.setMeteredIfSupported
import net.mullvad.talpid.tun_provider.TunConfig
open class TalpidVpnService : VpnService() {
@@ -115,13 +115,9 @@ open class TalpidVpnService : VpnService() {
addDisallowedApplication(app)
}
}
-
- if (Build.VERSION.SDK_INT >= 29) {
- setMetered(false)
- }
-
setMtu(config.mtu)
setBlocking(false)
+ setMeteredIfSupported(false)
}
val vpnInterface = builder.establish()
diff --git a/android/buildSrc/src/main/kotlin/Versions.kt b/android/buildSrc/src/main/kotlin/Versions.kt
index 75e963078d..5592cbdd74 100644
--- a/android/buildSrc/src/main/kotlin/Versions.kt
+++ b/android/buildSrc/src/main/kotlin/Versions.kt
@@ -12,10 +12,10 @@ object Versions {
const val turbine = "0.7.0"
object Android {
- const val compileSdkVersion = 31
+ const val compileSdkVersion = 33
const val material = "1.4.0"
const val minSdkVersion = 26
- const val targetSdkVersion = 30
+ const val targetSdkVersion = 33
const val volley = "1.2.1"
}
@@ -26,7 +26,7 @@ object Versions {
const val coordinatorlayout = "1.1.0"
const val espresso = "3.3.0"
const val lifecycle = "2.4.1"
- const val fragment = "1.3.2"
+ const val fragment = "1.4.1"
const val recyclerview = "1.2.1"
const val junit = "1.1.4"
const val test = "1.4.0"
diff --git a/android/gradle/verification-metadata.xml b/android/gradle/verification-metadata.xml
index 7ca4159dd4..29cd57f832 100644
--- a/android/gradle/verification-metadata.xml
+++ b/android/gradle/verification-metadata.xml
@@ -36,12 +36,12 @@
<sha256 value="30fd58f97339dde1f7f779b1b6a448c13f65102de46bacd5cc7849b762a4e7d2" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="androidx.activity" name="activity-ktx" version="1.2.2">
- <artifact name="activity-ktx-1.2.2.aar">
- <sha256 value="9829e13d6a6b045b03b21a330512e091dc76eb5b3ded0d88d1ab0509cf84a50e" origin="Generated by Gradle"/>
+ <component group="androidx.activity" name="activity-ktx" version="1.2.3">
+ <artifact name="activity-ktx-1.2.3.aar">
+ <sha256 value="423c0226e237e08de245cf66f8ccaf103854bc19a584d971a4a075fd15d70df1" origin="Generated by Gradle"/>
</artifact>
- <artifact name="activity-ktx-1.2.2.module">
- <sha256 value="92f4431091650b5a67cc4f654bd9b822c585cf4262180912f075779f07a04ba6" origin="Generated by Gradle"/>
+ <artifact name="activity-ktx-1.2.3.module">
+ <sha256 value="b6f851720c7e417103cb41d3e8d5e4ca67a1688cdfde342684ea1ffc2583c27a" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.annotation" name="annotation" version="1.0.0">
@@ -444,27 +444,32 @@
</artifact>
</component>
<component group="androidx.fragment" name="fragment" version="1.3.6">
- <artifact name="fragment-1.3.6.aar">
- <sha256 value="12f0831b4f08092d5dda272c1923c11a022ff20ceffed3e801751e21bb8d1c1e" origin="Generated by Gradle"/>
- </artifact>
<artifact name="fragment-1.3.6.module">
<sha256 value="a140981a3e65f3cab354652682061d23d19b01e00ee712bc38a5e9b0f69eedcf" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="androidx.fragment" name="fragment-ktx" version="1.3.2">
- <artifact name="fragment-ktx-1.3.2.aar">
- <sha256 value="29af1e9ee0e93b5fc638600c230705584aecc49205c363f0923ba1e5be675533" origin="Generated by Gradle"/>
+ <component group="androidx.fragment" name="fragment" version="1.4.1">
+ <artifact name="fragment-1.4.1.aar">
+ <sha256 value="52f2b0392a1f657a0b4fd7ba008fa3459c9b6053651f81a1a246fa21bff0c472" origin="Generated by Gradle"/>
+ </artifact>
+ <artifact name="fragment-1.4.1.module">
+ <sha256 value="cdc1e0b8bcd5b019bfa74781cfc1a9cc21eeb6af95f2c4518262b6a3304c5086" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="androidx.fragment" name="fragment-ktx" version="1.4.1">
+ <artifact name="fragment-ktx-1.4.1.aar">
+ <sha256 value="cbcd696a528b0e3a2ea11e0624e418c23cccd73cd5cd9f6fe272a3bb92eb91eb" origin="Generated by Gradle"/>
</artifact>
- <artifact name="fragment-ktx-1.3.2.module">
- <sha256 value="b3955b619e8a16c38af39c19126867c72d1954db05551709e58c082b946078c4" origin="Generated by Gradle"/>
+ <artifact name="fragment-ktx-1.4.1.module">
+ <sha256 value="2ec36fb109f91e3c3d62d4dc26acda197a4382a59a3ef005a364844fdf89be53" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="androidx.fragment" name="fragment-testing" version="1.3.2">
- <artifact name="fragment-testing-1.3.2.aar">
- <sha256 value="c9e4b3bfd105fecf3aff8a9105fdccf2e86ff6d5e53dc342a3aa65c087c1591e" origin="Generated by Gradle"/>
+ <component group="androidx.fragment" name="fragment-testing" version="1.4.1">
+ <artifact name="fragment-testing-1.4.1.aar">
+ <sha256 value="e1fcb4f00aafb942abf0390897ca3c99f10efa2612d2a91dc7f56dbd5ba8fb8c" origin="Generated by Gradle"/>
</artifact>
- <artifact name="fragment-testing-1.3.2.module">
- <sha256 value="75714382c8f9e292b01762852fd0672d33973254c2bd2b9918b50f861792b171" origin="Generated by Gradle"/>
+ <artifact name="fragment-testing-1.4.1.module">
+ <sha256 value="50697e49cf6645e57356acdcded73e274556971f90b7d21eb639e8372a9450d5" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="androidx.interpolator" name="interpolator" version="1.0.0">