From 0b66a64fdbc529d5a153734763c98331fa7e38e8 Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Sat, 20 Jan 2024 12:59:34 -0500 Subject: [PATCH] app-unpriv: Downgrade minSDK to 28 (P) This is probably the lowest version we can reasonably support with OMAPI. --- app-common/build.gradle.kts | 2 +- .../openeuicc/core/EuiccChannelManager.kt | 2 +- .../openeuicc/core/OmapiApduInterface.kt | 4 ++-- .../angry/openeuicc/util/TelephonyCompat.kt | 20 +++++++++++++++++++ app-unpriv/build.gradle.kts | 2 +- 5 files changed, 25 insertions(+), 5 deletions(-) diff --git a/app-common/build.gradle.kts b/app-common/build.gradle.kts index 4e3660d..7587a0a 100644 --- a/app-common/build.gradle.kts +++ b/app-common/build.gradle.kts @@ -8,7 +8,7 @@ android { compileSdk = 34 defaultConfig { - minSdk = 30 + minSdk = 28 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app-common/src/main/java/im/angry/openeuicc/core/EuiccChannelManager.kt b/app-common/src/main/java/im/angry/openeuicc/core/EuiccChannelManager.kt index 94ba71c..1c58c8e 100644 --- a/app-common/src/main/java/im/angry/openeuicc/core/EuiccChannelManager.kt +++ b/app-common/src/main/java/im/angry/openeuicc/core/EuiccChannelManager.kt @@ -35,7 +35,7 @@ open class EuiccChannelManager(protected val context: Context) { private val handler = Handler(HandlerThread("BaseEuiccChannelManager").also { it.start() }.looper) protected open val uiccCards: Collection - get() = (0.. handler.post { diff --git a/app-common/src/main/java/im/angry/openeuicc/core/OmapiApduInterface.kt b/app-common/src/main/java/im/angry/openeuicc/core/OmapiApduInterface.kt index fb5a264..1349f3c 100644 --- a/app-common/src/main/java/im/angry/openeuicc/core/OmapiApduInterface.kt +++ b/app-common/src/main/java/im/angry/openeuicc/core/OmapiApduInterface.kt @@ -3,7 +3,7 @@ package im.angry.openeuicc.core import android.se.omapi.Channel import android.se.omapi.SEService import android.se.omapi.Session -import im.angry.openeuicc.util.UiccPortInfoCompat +import im.angry.openeuicc.util.* import net.typeblog.lpac_jni.ApduInterface import net.typeblog.lpac_jni.LocalProfileAssistant import net.typeblog.lpac_jni.impl.HttpInterfaceImpl @@ -17,7 +17,7 @@ class OmapiApduInterface( private lateinit var lastChannel: Channel override fun connect() { - session = service.getUiccReader(port.logicalSlotIndex + 1).openSession() + session = service.getUiccReaderCompat(port.logicalSlotIndex + 1).openSession() } override fun disconnect() { diff --git a/app-common/src/main/java/im/angry/openeuicc/util/TelephonyCompat.kt b/app-common/src/main/java/im/angry/openeuicc/util/TelephonyCompat.kt index f01bd6f..614efdf 100644 --- a/app-common/src/main/java/im/angry/openeuicc/util/TelephonyCompat.kt +++ b/app-common/src/main/java/im/angry/openeuicc/util/TelephonyCompat.kt @@ -1,5 +1,25 @@ package im.angry.openeuicc.util +import android.os.Build +import android.se.omapi.Reader +import android.se.omapi.SEService +import android.telephony.TelephonyManager + +val TelephonyManager.activeModemCountCompat: Int + get() = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + activeModemCount + } else { + phoneCount + } + +fun SEService.getUiccReaderCompat(slotNumber: Int): Reader { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + return getUiccReader(slotNumber) + } else { + return readers.first { it.name == "SIM${slotNumber}" || (slotNumber == 1 && it.name == "SIM") } + } +} + /* * In the privileged version, the EuiccChannelManager should work * based on real Uicc{Card,Port}Info reported by TelephonyManager. diff --git a/app-unpriv/build.gradle.kts b/app-unpriv/build.gradle.kts index 776590d..7f49bb6 100644 --- a/app-unpriv/build.gradle.kts +++ b/app-unpriv/build.gradle.kts @@ -21,7 +21,7 @@ android { defaultConfig { applicationId = "im.angry.easyeuicc" - minSdk = 30 + minSdk = 28 targetSdk = 34 }