首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TagLostException IsoDep Android Java卡

TagLostException IsoDep Android Java卡
EN

Stack Overflow用户
提问于 2014-01-08 14:21:46
回答 1查看 1.5K关注 0票数 0

我正在使用一张使用安卓IsoDep的Java卡。我已经将超时设置为50000毫秒。我还计算了NFC连接打开的持续时间,它只有6秒多一点。

我把卡放在桌子上,把我的手机放在上面,在整个过程中我都没有碰它,所以卡不可能被物理移除。

你知道为什么会发生这种事吗?

我的代码:

代码语言:javascript
复制
try {
    if (nfc.isConnected()) {
        DLog.w(TAG, "exchange() - connected");

        byte[] resp = nfc.transceive(apdu);

        // ...
    } else {
        // ...
        close();
    }
} catch (TagLostException e) {
    DLog.e(TAG, "card was removed", e);
    close();
    // ...
}
catch (IOException e) {
    close();
    // ...
}  

例外情况是:

代码语言:javascript
复制
01-08 09:54:54.721: E/IsoDepSecureHandler(11221): android.nfc.TagLostException: Tag was lost.
01-08 09:54:54.721: E/IsoDepSecureHandler(11221):   at android.nfc.TransceiveResult.getResponseOrThrow(TransceiveResult.java:48)
01-08 09:54:54.721: E/IsoDepSecureHandler(11221):   at android.nfc.tech.BasicTagTechnology.transceive(BasicTagTechnology.java:151)
01-08 09:54:54.721: E/IsoDepSecureHandler(11221):   at android.nfc.tech.IsoDep.transceive(IsoDep.java:172)

它执行失败的特定命令是80460000400000271020363630303030303030353138323133303134333666383639383063022b100141000100000000000000000036364ed930284231adbc6c525e9f0abd

然而,当我使用连接到手机的非接触式阅读器时,同样的命令执行得很好。请注意,只有当我不重复该过程并生成新的安全参数时,该命令才能执行(在此之前,一些其他APDU命令已发送到卡)。一旦生成了新的安全参数,上述命令将不再起作用;因此,将返回6982

tbellenger建议在命令末尾添加00,但这不起作用,即使是在返回6985的智能卡读卡器上也是如此。

EN

回答 1

Stack Overflow用户

发布于 2014-01-08 15:33:33

尝试在APDU的末尾添加'00‘。这有时是必需的。不要修改'40‘中的'LC’-只需添加零字节即可。我认为这在T=CL或T=1中是必需的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20988355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档