package net.bluemangoo.indpjsk.data import android.content.Context import android.graphics.drawable.Drawable data class AppEntry( val packageName: String, val label: String, val icon: Drawable, ) object InstalledApps { fun list(context: Context): List { val pm = context.packageManager return pm.getInstalledApplications(0) .asSequence() .mapNotNull { info -> runCatching { AppEntry( packageName = info.packageName, label = pm.getApplicationLabel(info).toString(), icon = pm.getApplicationIcon(info), ) }.getOrNull() } .distinctBy { it.packageName } .sortedBy { it.label.lowercase() } .toList() } fun get(context: Context, packageName: String): AppEntry? = runCatching { val pm = context.packageManager val info = pm.getApplicationInfo(packageName, 0) AppEntry( packageName = packageName, label = pm.getApplicationLabel(info).toString(), icon = pm.getApplicationIcon(info), ) }.getOrNull() }