浏览代码

core: Fixup TelephonyManagerApduInterface channel management

Peter Cai 2 年之前
父节点
当前提交
7413c86dba
共有 1 个文件被更改,包括 4 次插入1 次删除
  1. 4 1
      app/src/main/java/im/angry/openeuicc/core/TelephonyManagerApduInterface.kt

+ 4 - 1
app/src/main/java/im/angry/openeuicc/core/TelephonyManagerApduInterface.kt

@@ -29,11 +29,14 @@ class TelephonyManagerApduInterface(
         if (channel.status != IccOpenLogicalChannelResponse.STATUS_NO_ERROR || channel.channel == IccOpenLogicalChannelResponse.INVALID_CHANNEL) {
             throw IllegalArgumentException("Cannot open logical channel " + hex + " via TelephonManager on slot " + info.slotId);
         }
-        return channel.channel
+        lastChannel = channel.channel
+        return lastChannel
     }
 
     override fun logicalChannelClose(handle: Int) {
+        check(handle == lastChannel) { "Invalid channel handle " }
         tm.iccCloseLogicalChannelBySlot(info.slotId, handle)
+        lastChannel = -1
     }
 
     override fun transmit(tx: ByteArray): ByteArray {