Compare commits

..

1 commit

Author SHA1 Message Date
45e443a622
refactor: improve partner customization 2025-07-14 22:08:13 +08:00

View file

@ -11,28 +11,23 @@ class Partner {
companion object { companion object {
private const val ACTION = "com.google.android.euicc.action.PARTNER_CUSTOMIZATION" private const val ACTION = "com.google.android.euicc.action.PARTNER_CUSTOMIZATION"
private val instances = mutableMapOf<String, Partner?>() fun getInstance(context: Context, action: String = ACTION): Partner? {
var flags = if (BuildConfig.DEBUG)
private val packageFlags: Int PackageManager.MATCH_UNINSTALLED_PACKAGES else
get() { PackageManager.MATCH_SYSTEM_ONLY
val flags = if (BuildConfig.DEBUG) flags = flags or PackageManager.MATCH_DISABLED_COMPONENTS
PackageManager.MATCH_UNINSTALLED_PACKAGES else val apps = context.packageManager
PackageManager.MATCH_SYSTEM_ONLY .queryBroadcastReceivers(Intent(action), flags)
return flags or PackageManager.MATCH_DISABLED_COMPONENTS
}
fun getInstance(context: Context, action: String = ACTION) = instances.getOrPut(action) {
context.packageManager
.queryBroadcastReceivers(Intent(action), packageFlags)
.mapNotNull { it.activityInfo?.applicationInfo } .mapNotNull { it.activityInfo?.applicationInfo }
.firstNotNullOfOrNull { for (app in apps) {
try { try {
context.packageManager.getResourcesForApplication(it) val resources = context.packageManager.getResourcesForApplication(app)
} catch (_: PackageManager.NameNotFoundException) { return Partner(resources)
null } catch (_: PackageManager.NameNotFoundException) {
} continue
} }
?.let(::Partner) }
return null
} }
} }