Browse Source

CompatibilityCheck: Return FAILURE_UNKNOWN when no SIM readers are found

Peter Cai 1 year ago
parent
commit
49af0ffee9

+ 7 - 1
app-unpriv/src/main/java/im/angry/openeuicc/util/CompatibilityCheck.kt

@@ -132,7 +132,13 @@ internal class IsdrChannelAccessCheck(private val context: Context): Compatibili
 
 
     override suspend fun doCheck(): State {
     override suspend fun doCheck(): State {
         val seService = connectSEService(context)
         val seService = connectSEService(context)
-        val (validSlotIds, result) = seService.readers.filter { it.isSIM }.map {
+        val readers = seService.readers.filter { it.isSIM }
+        if (readers.isEmpty()) {
+            failureDescription = context.getString(R.string.compatibility_check_isdr_channel_desc_unknown)
+            return State.FAILURE_UNKNOWN
+        }
+
+        val (validSlotIds, result) = readers.map {
             try {
             try {
                 it.openSession().openLogicalChannel(ISDR_AID)?.close()
                 it.openSession().openLogicalChannel(ISDR_AID)?.close()
                 Pair(it.slotIndex, State.SUCCESS)
                 Pair(it.slotIndex, State.SUCCESS)