diff options
| author | Aleksandr Granin <aleksandr@mullvad.net> | 2021-01-08 10:58:00 +0100 |
|---|---|---|
| committer | Aleksandr Granin <aleksandr@mullvad.net> | 2021-01-08 16:01:44 +0100 |
| commit | c39565c4743704483b2a80f48d17e1cf06b0269f (patch) | |
| tree | 1ec348b99c5cc272ea47521aec11e1e1f73c27ba /android/src | |
| parent | 63835d9ab54688c00aa8c87ebd628bfa91c16385 (diff) | |
| download | mullvadvpn-c39565c4743704483b2a80f48d17e1cf06b0269f.tar.xz mullvadvpn-c39565c4743704483b2a80f48d17e1cf06b0269f.zip | |
Update filter predicate.
Filter applications only with INTERNET permission in manifest
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/applist/AppListAdapter.kt | 18 |
1 files changed, 17 insertions, 1 deletions
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 + } } |
