细化+上游代理+1.1
This commit is contained in:
@@ -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()
|
||||
}
|
||||
Reference in New Issue
Block a user