AppLockPackageListFragment: fix app filter
Change-Id: I2e1441f6b394f5f3a40b627e039aa9a47fe26c1a
This commit is contained in:
@@ -62,24 +62,34 @@ class AppLockPackageListFragment : DashboardFragment() {
|
|||||||
|
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
super.onCreatePreferences(savedInstanceState, rootKey)
|
super.onCreatePreferences(savedInstanceState, rootKey)
|
||||||
|
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
val selectedPackages = getSelectedPackages()
|
val selectedPackages = getSelectedPackages()
|
||||||
|
|
||||||
val preferences = withContext(Dispatchers.Default) {
|
val preferences = withContext(Dispatchers.Default) {
|
||||||
pm.getInstalledPackages(
|
val installedPackages = pm.getInstalledPackages(
|
||||||
PackageInfoFlags.of(PackageManager.MATCH_ALL.toLong())
|
PackageInfoFlags.of(PackageManager.MATCH_ALL.toLong())
|
||||||
).filter { packageInfo ->
|
)
|
||||||
val isSystemApp = packageInfo.applicationInfo?.isSystemApp ?: false
|
|
||||||
!isSystemApp || launchablePackages.contains(packageInfo.packageName) ||
|
installedPackages
|
||||||
whiteListedPackages.contains(packageInfo.packageName)
|
.filter { packageInfo ->
|
||||||
}.sortedWith { first, second ->
|
val pkgName = packageInfo.packageName
|
||||||
getLabel(first).compareTo(getLabel(second))
|
val appInfo = packageInfo.applicationInfo
|
||||||
|
val isSystemApp = appInfo?.isSystemApp ?: false
|
||||||
|
val isLaunchable = pm.getLaunchIntentForPackage(pkgName) != null
|
||||||
|
val isWhitelisted = whiteListedPackages.contains(pkgName)
|
||||||
|
|
||||||
|
val shouldInclude = isLaunchable && (!isSystemApp || isWhitelisted)
|
||||||
|
shouldInclude
|
||||||
}
|
}
|
||||||
|
.sortedBy { getLabel(it) }
|
||||||
}.map { packageInfo ->
|
}.map { packageInfo ->
|
||||||
createPreference(packageInfo, selectedPackages.contains(packageInfo.packageName))
|
createPreference(packageInfo, selectedPackages.contains(packageInfo.packageName))
|
||||||
}
|
}
|
||||||
preferenceScreen?.let {
|
|
||||||
|
preferenceScreen?.let { screen ->
|
||||||
preferences.forEach { pref ->
|
preferences.forEach { pref ->
|
||||||
it.addPreference(pref)
|
screen.addPreference(pref)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user