summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
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
+ }
}