diff --git a/app/src/main/java/im/angry/openeuicc/util/Partner.kt b/app/src/main/java/im/angry/openeuicc/util/Partner.kt index 43ecc18..4a58985 100644 --- a/app/src/main/java/im/angry/openeuicc/util/Partner.kt +++ b/app/src/main/java/im/angry/openeuicc/util/Partner.kt @@ -11,28 +11,23 @@ class Partner { companion object { private const val ACTION = "com.google.android.euicc.action.PARTNER_CUSTOMIZATION" - private val instances = mutableMapOf() - - private val packageFlags: Int - get() { - val flags = if (BuildConfig.DEBUG) - PackageManager.MATCH_UNINSTALLED_PACKAGES else - PackageManager.MATCH_SYSTEM_ONLY - return flags or PackageManager.MATCH_DISABLED_COMPONENTS - } - - fun getInstance(context: Context, action: String = ACTION) = instances.getOrPut(action) { - context.packageManager - .queryBroadcastReceivers(Intent(action), packageFlags) + fun getInstance(context: Context, action: String = ACTION): Partner? { + var flags = if (BuildConfig.DEBUG) + PackageManager.MATCH_UNINSTALLED_PACKAGES else + PackageManager.MATCH_SYSTEM_ONLY + flags = flags or PackageManager.MATCH_DISABLED_COMPONENTS + val apps = context.packageManager + .queryBroadcastReceivers(Intent(action), flags) .mapNotNull { it.activityInfo?.applicationInfo } - .firstNotNullOfOrNull { - try { - context.packageManager.getResourcesForApplication(it) - } catch (_: PackageManager.NameNotFoundException) { - null - } + for (app in apps) { + try { + val resources = context.packageManager.getResourcesForApplication(app) + return Partner(resources) + } catch (_: PackageManager.NameNotFoundException) { + continue } - ?.let(::Partner) + } + return null } }