summaryrefslogtreecommitdiffhomepage
path: root/android/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'android/src/main')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt8
-rw-r--r--android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt5
-rw-r--r--android/src/main/kotlin/net/mullvad/talpid/tunnel/ErrorStateCause.kt1
-rw-r--r--android/src/main/res/values/strings.xml3
4 files changed, 16 insertions, 1 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt
index 83cc14b738..3965344f7a 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt
@@ -193,13 +193,19 @@ class NotificationBanner(
}
}
}
+ is ErrorStateCause.VpnPermissionDenied -> R.string.vpn_permission_denied_error
}
// if the error state is null, we can assume that we are secure
if (errorState?.isBlocking ?: true) {
showError(R.string.blocking_internet, messageText)
} else {
- showError(R.string.not_blocking_internet, R.string.failed_to_block_internet)
+ val updatedMessageText = when (cause) {
+ is ErrorStateCause.VpnPermissionDenied -> messageText
+ else -> R.string.failed_to_block_internet
+ }
+
+ showError(R.string.not_blocking_internet, updatedMessageText)
}
}
diff --git a/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt b/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
index a36e0b1db6..f960f0c13f 100644
--- a/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
+++ b/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
@@ -18,6 +18,11 @@ open class TalpidVpnService : VpnService() {
}
fun createTun(config: TunConfig): Int {
+ if (VpnService.prepare(this) != null) {
+ // VPN permission wasn't granted
+ return -1
+ }
+
val builder = Builder().apply {
for (address in config.addresses) {
addAddress(address, prefixForAddress(address))
diff --git a/android/src/main/kotlin/net/mullvad/talpid/tunnel/ErrorStateCause.kt b/android/src/main/kotlin/net/mullvad/talpid/tunnel/ErrorStateCause.kt
index e289b59551..d35d0a428b 100644
--- a/android/src/main/kotlin/net/mullvad/talpid/tunnel/ErrorStateCause.kt
+++ b/android/src/main/kotlin/net/mullvad/talpid/tunnel/ErrorStateCause.kt
@@ -9,4 +9,5 @@ sealed class ErrorStateCause {
class TunnelParameterError(val error: ParameterGenerationError) : ErrorStateCause()
class IsOffline : ErrorStateCause()
class TapAdapterProblem : ErrorStateCause()
+ class VpnPermissionDenied : ErrorStateCause()
}
diff --git a/android/src/main/res/values/strings.xml b/android/src/main/res/values/strings.xml
index a9c5cdab2a..744ae5a0c1 100644
--- a/android/src/main/res/values/strings.xml
+++ b/android/src/main/res/values/strings.xml
@@ -120,6 +120,9 @@
server</string>
<string name="start_tunnel_error">Failed to start tunnel
connection</string>
+ <string name="vpn_permission_denied_error">VPN permission was
+ denied when creating the tunnel. Please try connecting
+ again.</string>
<string name="no_matching_relay">No relay server matches the
current settings</string>
<string name="no_matching_bridge_relay">No bridge relay server