我正在尝试使用IsoDep和NfcAdapter类将APDU发送到标签(智能卡),但我有2个问题:

1)有没有办法获得断开连接的意图(例如,当卡被拿走时)?我没有看到此类操作的任何预定义意图。知道何时断开标签的唯一方法是轮询其IsoDep.isConnected()方法吗?

2)假设我需要按顺序发送一个以上的APDU,是否可以确保没有其他应用程序在中间中断通信?是否有类似NFC的pcsc事务(SCardBegin / EndTransaction)?

谢谢!

最佳答案

问题1的答案:断开标签不会产生任何意图。当您正在与之通信的标签消失(即不回答)时,您将获得TagLostException(一种特殊的IOException)。 IsoDep.isConnected()仅报告最后一个已知状态,因此轮询它通常不会告诉您标签是否实际上仍然存在。

对问题2的回答:只有收到带有标签句柄的Intent的Activity才能与标签通信。因此,另一个活动或服务不可能闯入或接管与标签的通信。唯一经常发生的事情是您的活动在通信时被挂起(称为Activity.onPause())。

10-08 19:04