diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-08-23 10:40:57 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-08-29 11:13:16 +0000 |
| commit | 570aa1f3aa328fb330a500630698604b7b5204c8 (patch) | |
| tree | 8e40b326cadb5241bbdd0885b8b09537b2478456 /android | |
| parent | 454e6893985b010a8ca2c07d288d44995348bd48 (diff) | |
| download | mullvadvpn-570aa1f3aa328fb330a500630698604b7b5204c8.tar.xz mullvadvpn-570aa1f3aa328fb330a500630698604b7b5204c8.zip | |
Show foreground notification for VPN service
Diffstat (limited to 'android')
| -rw-r--r-- | android/src/main/AndroidManifest.xml | 1 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadVpnService.kt | 21 | ||||
| -rw-r--r-- | android/src/main/res/drawable-hdpi/notification.png | bin | 0 -> 755 bytes | |||
| -rw-r--r-- | android/src/main/res/drawable-mdpi/notification.png | bin | 0 -> 505 bytes | |||
| -rw-r--r-- | android/src/main/res/drawable-xhdpi/notification.png | bin | 0 -> 1000 bytes | |||
| -rw-r--r-- | android/src/main/res/drawable-xxhdpi/notification.png | bin | 0 -> 1570 bytes | |||
| -rw-r--r-- | android/src/main/res/drawable-xxxhdpi/notification.png | bin | 0 -> 2143 bytes |
7 files changed, 22 insertions, 0 deletions
diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml index 9dbdab3612..5cacbd46b2 100644 --- a/android/src/main/AndroidManifest.xml +++ b/android/src/main/AndroidManifest.xml @@ -4,6 +4,7 @@ package="net.mullvad.mullvadvpn" > <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> + <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.INTERNET" /> <application diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadVpnService.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadVpnService.kt index 2c51a9ecde..d624b9fe62 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadVpnService.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadVpnService.kt @@ -9,15 +9,20 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import android.app.Activity +import android.app.Notification +import android.app.PendingIntent import android.content.Context import android.content.Intent import android.net.VpnService import android.os.Binder import android.os.IBinder +import android.support.v4.app.NotificationCompat import net.mullvad.mullvadvpn.dataproxy.AppVersionInfoFetcher import net.mullvad.mullvadvpn.model.TunConfig +val ONGOING_NOTIFICATION_ID: Int = 1 + class MullvadVpnService : VpnService() { private val created = CompletableDeferred<Unit>() private val binder = LocalBinder() @@ -28,6 +33,7 @@ class MullvadVpnService : VpnService() { override fun onCreate() { versionInfoFetcher = AppVersionInfoFetcher(daemon, this) + startForeground(ONGOING_NOTIFICATION_ID, buildNotification()) created.complete(Unit) } @@ -39,6 +45,7 @@ class MullvadVpnService : VpnService() { versionInfoFetcher.stop() daemon.cancel() created.cancel() + stopForeground(ONGOING_NOTIFICATION_ID) } fun createTun(config: TunConfig): Int { @@ -82,6 +89,20 @@ class MullvadVpnService : VpnService() { } } + private fun buildNotification(): Notification { + val intent = Intent(this, MainActivity::class.java) + .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) + .setAction(Intent.ACTION_MAIN) + + val pendingIntent = + PendingIntent.getActivity(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT) + + return NotificationCompat.Builder(this) + .setSmallIcon(R.drawable.notification) + .setContentIntent(pendingIntent) + .build() + } + private fun startDaemon() = GlobalScope.async(Dispatchers.Default) { created.await() ApiRootCaFile().extract(application) diff --git a/android/src/main/res/drawable-hdpi/notification.png b/android/src/main/res/drawable-hdpi/notification.png Binary files differnew file mode 100644 index 0000000000..a6aa370201 --- /dev/null +++ b/android/src/main/res/drawable-hdpi/notification.png diff --git a/android/src/main/res/drawable-mdpi/notification.png b/android/src/main/res/drawable-mdpi/notification.png Binary files differnew file mode 100644 index 0000000000..d1a7dc4d5f --- /dev/null +++ b/android/src/main/res/drawable-mdpi/notification.png diff --git a/android/src/main/res/drawable-xhdpi/notification.png b/android/src/main/res/drawable-xhdpi/notification.png Binary files differnew file mode 100644 index 0000000000..7ce258b490 --- /dev/null +++ b/android/src/main/res/drawable-xhdpi/notification.png diff --git a/android/src/main/res/drawable-xxhdpi/notification.png b/android/src/main/res/drawable-xxhdpi/notification.png Binary files differnew file mode 100644 index 0000000000..edebf879d3 --- /dev/null +++ b/android/src/main/res/drawable-xxhdpi/notification.png diff --git a/android/src/main/res/drawable-xxxhdpi/notification.png b/android/src/main/res/drawable-xxxhdpi/notification.png Binary files differnew file mode 100644 index 0000000000..b2b88998cb --- /dev/null +++ b/android/src/main/res/drawable-xxxhdpi/notification.png |
