2014-09-26 514 views
0

有誰知道如何使用NFC API爲Android應用程序獲取智能卡ATR?我使用的卡是非接觸式卡。 我有這樣的代碼如何使用Android NFC API獲取智能卡ATR?

szATR =" 3B " + getATRLeString(myTag.getHistoricalBytes())+ "80 01 " + getHexString(myTag.getHistoricalBytes())+""+ getATRXorString(myTag.getHistoricalBytes()); 

,但它返回null作爲響應。

+0

myTag.getHistoricalBytes();方法返回空字符串 – 2014-09-26 08:48:47

回答

3

從技術上講,NFC標籤沒有像ATR這樣的東西。

ATR用於基於聯繫人的智能卡通信。 ATR主要包含基於接觸的通信所需的數據,例如最大通信速度,保護時間等。所有這些信息都不適用於NFC。 ATR也可能包含所謂的歷史字節。

如果您對myTag.getHistoricalBytes()的調用返回null,那麼您的NFC標籤根本沒有任何歷史字節返回。

關於ATR和NFC一般情況:由於大量NFC標籤和智能卡都使用相同的高級通信協議(ISO7816),因此將NFC功能添加到智能卡讀卡器是一種自然選擇。出於兼容性原因,舊軟件需要ATR才能使軟件和智能卡基礎架構正常工作。因此,只要您在NFC環境中看到ATR,就可以確定它是由驅動程序或讀卡器生成的假ATR。

+0

如何在Android中讀取ATR? – neo 2017-07-20 07:27:11