diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2021-01-11 11:35:53 +0100 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2021-01-11 11:35:53 +0100 |
| commit | 1a2c45d89b13140103ba4fbbc30d5b2c391e4eeb (patch) | |
| tree | 1fcf02593f051cd90529ce950a64fa96d2b8446d | |
| parent | 63835d9ab54688c00aa8c87ebd628bfa91c16385 (diff) | |
| parent | feff3c232ba08c6b627a1a4900c78b29ee1c5aff (diff) | |
| download | mullvadvpn-1a2c45d89b13140103ba4fbbc30d5b2c391e4eeb.tar.xz mullvadvpn-1a2c45d89b13140103ba4fbbc30d5b2c391e4eeb.zip | |
Merge branch 'android-split-tunnel-ui-updates'
| -rw-r--r-- | CHANGELOG.md | 1 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/applist/AppListAdapter.kt | 18 |
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 + } } |
