Compare commits
1 commit
45e443a622
...
6cdbcca741
Author | SHA1 | Date | |
---|---|---|---|
6cdbcca741 |
1 changed files with 21 additions and 16 deletions
|
@ -11,23 +11,28 @@ 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"
|
||||||
|
|
||||||
fun getInstance(context: Context, action: String = ACTION): Partner? {
|
private val instances = mutableMapOf<String, Partner?>()
|
||||||
var flags = if (BuildConfig.DEBUG)
|
|
||||||
|
private val packageFlags: Int
|
||||||
|
get() {
|
||||||
|
val flags = if (BuildConfig.DEBUG)
|
||||||
PackageManager.MATCH_UNINSTALLED_PACKAGES else
|
PackageManager.MATCH_UNINSTALLED_PACKAGES else
|
||||||
PackageManager.MATCH_SYSTEM_ONLY
|
PackageManager.MATCH_SYSTEM_ONLY
|
||||||
flags = flags or PackageManager.MATCH_DISABLED_COMPONENTS
|
return flags or PackageManager.MATCH_DISABLED_COMPONENTS
|
||||||
val apps = context.packageManager
|
}
|
||||||
.queryBroadcastReceivers(Intent(action), flags)
|
|
||||||
|
fun getInstance(context: Context, action: String = ACTION) = instances.getOrPut(action) {
|
||||||
|
context.packageManager
|
||||||
|
.queryBroadcastReceivers(Intent(action), packageFlags)
|
||||||
.mapNotNull { it.activityInfo?.applicationInfo }
|
.mapNotNull { it.activityInfo?.applicationInfo }
|
||||||
for (app in apps) {
|
.firstNotNullOfOrNull {
|
||||||
try {
|
try {
|
||||||
val resources = context.packageManager.getResourcesForApplication(app)
|
context.packageManager.getResourcesForApplication(it)
|
||||||
return Partner(resources)
|
|
||||||
} catch (_: PackageManager.NameNotFoundException) {
|
} catch (_: PackageManager.NameNotFoundException) {
|
||||||
continue
|
null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null
|
?.let(::Partner)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue