当前位置: 首页 > 知识库问答 >
问题:

读取Android NFC IsoDep标签时出现连接错误

井宪
2023-03-14

工作的设备:

  • Moto X Play(Android 6.0.1)
  • Moto G Play(Android 6.0.1)
  • 三星Galaxy S7(Android 7.0)
  • 三星Galaxy S8-英国型号(Android 7.0)
  • Pixel 2(Android 8.1)

发生故障的设备:

    null
IsoDep isoDep = IsoDep.get(tag);

try {
    isoDep.connect();
}
catch (IOException e) {
    Log.e("NFC", ":(");
}

最后,对于不工作的器件,Logcat中会出现以下条目:E/NXPNFCJNI:Mifare Classic检测到

随着更现代的Android设备所提供的扩展NFC支持,NFC系统服务中是否有可能存在一些关于连接到什么标签技术的混乱?

共有1个答案

高茂
2023-03-14

在Android8+和Android6、7上进行测试时,我发现IsoDep类也有类似的问题

对我来说,关键是使用NFCADAPTER.EnableReaderMode实例方法关闭Android设备上的主机卡仿真,同时我的应用程序处于前台并尝试读/写标记。

然后,我没有应用如文档示例所示的生命周期回调,而是遵循了针对这个问题的建议,并执行了以下操作;

@Override
public void onPause() {
    super.onPause();
    NfcAdapter.getDefaultAdapter(this).disableReaderMode(this);
}

@Override
public void onResume() {
    super.onResume();

    Bundle options = new Bundle();
    options.putInt(NfcAdapter.EXTRA_READER_PRESENCE_CHECK_DELAY, 500);

    adapter.enableReaderMode(
        this,
        new NfcAdapter.ReaderCallback() {
             @Override
             public void onTagDiscovered(final Tag tag) {
                 IsoDep isoDep = IsoDep.get(tag);
                 // Connect and perform rest of communication
             }
        },
        NfcAdapter.FLAG_READER_NFC_A | NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK,
        options
    ); 
}

@Override
public void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
}
 类似资料:
  • 我有一个Android应用程序可以读取NFC标签。在LG Nexus4上一切正常,但在三星Galaxy S5上,我只得到I/O异常(在多部手机上测试)。 因此,标记是NfcV类型的,当在NfcV上调用时,我会得到I/O异常(再往下是错误代码-5ERROR_CONNECT)。 恩智浦的NFC TagInfo可以读取SG5S上标签的内存内容-除了和之外,还有其他方式读取NfcV标签吗? NFC芯片之间

  • 我返回了一个代码,使用jsoup-1.7.3.jar读取网页,它对一些网站有效,但对一些URL显示读取超时错误。 线程“main”java.net.SocketTimeoutException中的异常:java.net.SocketInputStream.socketRead0(本机方法)处java.net.SocketInputStream.Read(SocketInputStream.java

  • 问题内容: 我正在运行使用使用自签名CA证书创建的证书的https服务器。 现在,我想将Socket.io客户端连接到连接到https服务器的Socket.io服务器。不幸的是,我得到一个错误,告诉我: 基本上,此错误告诉我无法成功验证证书。这是由于相应的CA证书是自签名的。使用https请求时,我可以指定我信任的CA。 在这种情况下,如何使Socket.io连接? PS:我正在运行Node.js

  • 问题内容: 当我尝试将SVN连接到Eclipse时,出现以下错误:知道如何解决吗? 问题答案: 选择SVN接口: 客户端:SVNKit(纯Java) 应用并重试。

  • 我正在尝试运行以下Sqoop命令: 然而,我得到了这个错误: 17/02/04 00:04:53 警告安全。用户组信息: 特权行动例外作为:avinash (身份验证:简单) 原因:java.io.文件不发现异常: 文件不存在: hdfs://localhost:9000/home/avinash/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/lib/slf4j-api-

  • 问题内容: 我正在使用Fabric作为构建脚本。我只是克隆了一个虚拟机并创建了一个新服务器。Fabric脚本(在下面使用paramiko)可以在一台服务器上正常运行,但不能在另一台服务器上正常运行。由于它是一个克隆,所以我不知道会有什么不同,但是每次我运行Fabric脚本时,都会收到错误消息。该脚本与两个服务器上的同一用户连接。该脚本在所有其他服务器上都可以正常工作,除了我刚刚克隆的这一新服务器。