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 } } } +