【问题标题】:How to extract data through IsoDep technology - NFC(Android)如何通过 IsoDep 技术提取数据 - NFC(Android)
【发布时间】:2017-10-25 15:41:15
【问题描述】:

我将 NFC 技术用于我在 Android 中的一个项目。我已经成功实现了标签检测,并且基于标签我知道我需要使用哪个类来提取数据。但是有一个问题,我需要使用/点击来获取数据的卡是使用 IsoDep 技术而不是 NDEF 技术。我知道如何从使用 NDEF 技术的卡中提取数据,但由于 IsoDep 技术,我被困在这里。为了更好地理解,我正在与这个问题分享我的代码 sn-p。

if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action) || NfcAdapter.ACTION_TECH_DISCOVERED.equals(action) || NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {

Tag tag = getIntent().getParcelableExtra(NfcAdapter.EXTRA_TAG);
IsoDep isoDep = IsoDep.get(tag);
isoDep.connect();
//code to get the data from card
isoDep.close()
}

所以在这里我通过 NFCAdapter 获得 TAG_DISCOVERED,并且在条件内我获得 IsoDep、tech.NFcA、NdefFormattable 作为标签变量值。我正在创建 IsoDep 类的实例并调用 connect() 方法。在这里,每次我尝试启动连接以读取数据时,我都会收到 IOException,我不知道为什么! 谁能帮我解决这个问题?任何帮助都是不言而喻的。

谢谢

【问题讨论】:

    标签: android android-intent nfc ndef


    【解决方案1】:

    首先,您应该通过检查isoDep == null 来检查.get 调用是否有效。

    对于您的IOException,如果您无法提供代码,则很难确定问题的具体原因。从标签中提取数据的方法因制造商而异。您注意到该标签还支持NfcA,如果这项技术也不起作用,可能值得调查。

    但是,需要考虑一些事项:

    • 您是否尝试过使用超过 1 个标签?您能否确认该问题与标签无关?
    • 您是否正确设置了 NFC 权限?否则可能是不合逻辑的 IOException 。
    • 你是从另一个线程调用.close() 吗?这将导致 IOException。

    【讨论】:

    • 感谢@henrycjc 的回复我已经检查过 IsoDep 的对象在我的情况下不为空。同样对于所有其他技术,我得到了空值,所以我认为我只需要在这种情况下使用 IsoDep 技术。
    • 澄清一下,空检查只是一个好的做法,而不是解决问题的方法。但是,你是说NfcA出现在Tag.getTechList()却不能成功.get?您确定您还没有与其他技术建立联系吗?您还可以解决 IOException 问题吗?目前还不清楚您要做什么。
    • 好的,所以我再次检查了它,我成功地获得了 Nfca.get(tag)。关于使用 IsoDep 技术执行任何操作时的 IOException,我们首先需要 connect() 它,但我在执行此操作时遇到 IO 异常。希望你有这个时间。
    • 当我尝试连接()时,即使是 Nfca 对象;它给了我 IOException。
    猜你喜欢
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    相关资源
    最近更新 更多