细化+上游代理+1.1

This commit is contained in:
2026-10-25 19:01:45 +08:00
parent 5ec7815a13
commit 070020a296
21 changed files with 1429 additions and 158 deletions
@@ -0,0 +1,46 @@
package net.bluemangoo.indpjsk.data
import android.content.Context
import android.content.pm.ApplicationInfo
import android.graphics.drawable.Drawable
data class AppEntry(
val packageName: String,
val label: String,
val icon: Drawable,
)
object InstalledApps {
fun list(context: Context): List<AppEntry> {
val pm = context.packageManager
return pm.getInstalledApplications(0)
.asSequence()
.filter { info ->
(info.flags and ApplicationInfo.FLAG_SYSTEM) == 0 ||
(info.flags and ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0
}
.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()
}