summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorAleksandr Granin <aleksandr@mullvad.net>2021-01-08 10:58:00 +0100
committerAleksandr Granin <aleksandr@mullvad.net>2021-01-08 16:01:44 +0100
commitc39565c4743704483b2a80f48d17e1cf06b0269f (patch)
tree1ec348b99c5cc272ea47521aec11e1e1f73c27ba /android/src
parent63835d9ab54688c00aa8c87ebd628bfa91c16385 (diff)
downloadmullvadvpn-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.kt18
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
+ }
}