AppLockPackageListFragment: fix app filter

Change-Id: I2e1441f6b394f5f3a40b627e039aa9a47fe26c1a
This commit is contained in:
rmp22
2025-04-19 13:39:26 +08:00
committed by Joey
parent 9bd6860aa1
commit 0371350cc3

View File

@@ -62,24 +62,34 @@ class AppLockPackageListFragment : DashboardFragment() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
super.onCreatePreferences(savedInstanceState, rootKey)
lifecycleScope.launch {
val selectedPackages = getSelectedPackages()
val preferences = withContext(Dispatchers.Default) {
pm.getInstalledPackages(
val installedPackages = pm.getInstalledPackages(
PackageInfoFlags.of(PackageManager.MATCH_ALL.toLong())
).filter { packageInfo ->
val isSystemApp = packageInfo.applicationInfo?.isSystemApp ?: false
!isSystemApp || launchablePackages.contains(packageInfo.packageName) ||
whiteListedPackages.contains(packageInfo.packageName)
}.sortedWith { first, second ->
getLabel(first).compareTo(getLabel(second))
)
installedPackages
.filter { packageInfo ->
val pkgName = packageInfo.packageName
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 ->
createPreference(packageInfo, selectedPackages.contains(packageInfo.packageName))
}
preferenceScreen?.let {
preferenceScreen?.let { screen ->
preferences.forEach { pref ->
it.addPreference(pref)
screen.addPreference(pref)
}
}
}