【发布时间】:2026-01-26 15:50:01
【问题描述】:
我想通过 NFC(IsoDep 类)向 Java Card 智能卡发送一个长度为 1699 字节的 APDU。我得到了错误
java.io.IOException:收发长度超过支持的最大值
我的手机是三星 Galaxy S7。
我在卡上的小程序中使用扩展长度。我已验证该卡支持扩展长度。我通过 pyapdutool 向卡发送了一个 4000 字节的 APDU 对此进行了测试。
发现我写这段代码的时候,结果是false:
final Tag t = (Tag) tag;
myTag = IsoDep.get(t);
boolean result = myTag.isExtendedLengthApduSupported();
我的清单中有这个:
<activity
android:name=".test"
android:label="@string/title_test"
android:launchMode="singleTop"
android:theme="@style/AppTheme.NoActionBar" >
<action android:name="android.nfc.action.TAG_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
</intent-filter>
</activity>
如何通过 Android NFC 发送 1699 字节(或任何长度大于 261 字节)的 APDU?
【问题讨论】:
-
据我所知,该主题尚未解决
-
不清楚卡是否支持这样的长度。您是否在台式电脑上尝试过并在那里工作过?
-
即使是我的带有 NFC 芯片的笔记本电脑也不支持扩展长度。不幸的是,这又是同一个故事。第一个“普通”智能卡读卡器不支持扩展长度,然后他们以极其错误的方式支持,现在似乎只剩下小问题了。我认为 NFC 芯片也会采用同样的方式(尽管这些芯片更便宜,因此可能需要更多时间)。
标签: android nfc javacard apdu contactless-smartcard