summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2021-01-11 11:35:53 +0100
committerLinus Färnstrand <linus@mullvad.net>2021-01-11 11:35:53 +0100
commit1a2c45d89b13140103ba4fbbc30d5b2c391e4eeb (patch)
tree1fcf02593f051cd90529ce950a64fa96d2b8446d
parent63835d9ab54688c00aa8c87ebd628bfa91c16385 (diff)
parentfeff3c232ba08c6b627a1a4900c78b29ee1c5aff (diff)
downloadmullvadvpn-1a2c45d89b13140103ba4fbbc30d5b2c391e4eeb.tar.xz
mullvadvpn-1a2c45d89b13140103ba4fbbc30d5b2c391e4eeb.zip
Merge branch 'android-split-tunnel-ui-updates'
-rw-r--r--CHANGELOG.md1
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/applist/AppListAdapter.kt18
2 files changed, 18 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ac7303ff09..e2a0ce87f8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -29,6 +29,7 @@ Line wrap the file at 100 chars. Th
#### Android
- Allow to configure the tunnel to use custom DNS servers.
+- Show only applications that has INTERNET permission on split tunnel screen.
#### Linux
- Improved compatiblitiy with newer versions of systemd-resolved.
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/applist/AppListAdapter.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/applist/AppListAdapter.kt
index ad987dfe8a..91e1d0f951 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/applist/AppListAdapter.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/applist/AppListAdapter.kt
@@ -1,6 +1,9 @@
package net.mullvad.mullvadvpn.applist
+import android.Manifest
import android.content.Context
+import android.content.pm.ApplicationInfo
+import android.content.pm.PackageManager
import android.support.v7.widget.RecyclerView.Adapter
import android.view.LayoutInflater
import android.view.ViewGroup
@@ -18,6 +21,10 @@ class AppListAdapter(
private val packageManager = context.packageManager
private val thisPackageName = context.packageName
+ private val applicationFilterPredicate: (ApplicationInfo) -> Boolean = { appInfo ->
+ hasInternetPermission(appInfo.packageName) && !isSelfApplication(appInfo.packageName)
+ }
+
var onListReady: (suspend () -> Unit)? = null
var isListReady = false
@@ -55,7 +62,7 @@ class AppListAdapter(
private fun populateAppList() {
val applications = packageManager
.getInstalledApplications(0)
- .filter { info -> info.packageName != thisPackageName }
+ .filter(applicationFilterPredicate)
.map { info -> AppInfo(info, packageManager.getApplicationLabel(info).toString()) }
appList.apply {
@@ -70,4 +77,13 @@ class AppListAdapter(
notifyItemRangeInserted(0, applications.size)
}
}
+
+ private fun hasInternetPermission(packageName: String): Boolean {
+ return PackageManager.PERMISSION_GRANTED ==
+ packageManager.checkPermission(Manifest.permission.INTERNET, packageName)
+ }
+
+ private fun isSelfApplication(packageName: String): Boolean {
+ return packageName == thisPackageName
+ }
}