From 0cd47459215bef8a744b0e067e86bf96c90dba6b Mon Sep 17 00:00:00 2001 From: minaripenguin Date: Sun, 27 Oct 2024 10:19:19 +0800 Subject: [PATCH] AppUtils: Filter cloneable apps to include only launchable packages Signed-off-by: minaripenguin --- .../android/settings/custom/utils/AppUtils.kt | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/src/com/android/settings/custom/utils/AppUtils.kt b/src/com/android/settings/custom/utils/AppUtils.kt index 353b16f9fdc..c6d49af0f8a 100644 --- a/src/com/android/settings/custom/utils/AppUtils.kt +++ b/src/com/android/settings/custom/utils/AppUtils.kt @@ -5,26 +5,22 @@ import android.content.pm.PackageInfo import android.os.UserHandle class AppUtils { - public fun getCloneableAppList(context: Context): List { - var packageList: List = - context.getPackageManager().getInstalledPackagesAsUser(/* flags*/ 0, UserHandle.myUserId()) - - var filteredList: List = packageList.filter { - val packageName = it.applicationInfo?.packageName - val isSystemApp = it.applicationInfo?.isSystemApp() - val isResourceOverlay = it.applicationInfo?.isResourceOverlay() - - val cloneableApps = context.resources.getStringArray(com.android.internal.R.array.cloneable_apps)?.toList() - - cloneableApps?.contains(packageName) == true || (isSystemApp == false && isResourceOverlay == false) + fun getCloneableAppList(context: Context): List { + val packageManager = context.packageManager + val packageList: List = + packageManager.getInstalledPackagesAsUser(0, UserHandle.myUserId()) + val cloneableApps = context.resources.getStringArray(com.android.internal.R.array.cloneable_apps)?.toList() + val filteredList = packageList.filter { packageInfo -> + val packageName = packageInfo.applicationInfo?.packageName + val isSystemApp = packageInfo.applicationInfo?.isSystemApp() == true + packageName != null && (cloneableApps?.contains(packageName) == true || !isSystemApp) && + packageManager.getLaunchIntentForPackage(packageName) != null } - return filteredList } - public fun getCloneableAppListStr(context: Context): List { - return getCloneableAppList(context).map { - x -> x.packageName - }.toList() + fun getCloneableAppListStr(context: Context): List { + return getCloneableAppList(context).map { it.packageName } } } +