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

为什么我在使NFC标签为只读时出现IOException

童浩言
2023-03-14

我正在AsyncT的doInbackground()中写入我的NFC。当我编写Ndf记录时,它工作得很好,但当我尝试使标签只读时,我得到了IOExc的。这是发生异常的代码

  if (readOnly && !ndef.canMakeReadOnly()) {
        throw new NdefCantMakeReadOnlyException(R.string.cant_make_read_only);
    } else if (readOnly) {
        ndef.makeReadOnly(); //IOException
    }

该makeReadOnly适用于Mifare Ultralight (MF0ICU1)标签。

共有1个答案

禄星腾
2023-03-14

浏览Android 4.4.2源代码(我没有检查旧版本)发现,如果makeReadOnly()由于任何原因失败,您总是会得到IOException。所以你在Android中发现了一个bug,或者至少与API文档不匹配。

原因是android.nfc.tech.Ndef(参见此处,从第383行开始)期望nfc服务返回错误代码。成功</code>表示成功锁定,<code>表示错误代码。ERROR_INVALID_PARAM</code>表示锁定失败,<code>表示错误代码。任何IO相关错误的ERROR_IO。然而,NFC服务返回错误代码。如果锁定成功(参见此处的第1438行)和错误代码,则为SUCCESS。ERROR_IO,如果锁定因任何原因失败(参见此处第1440行)<代码>错误代码。ERROR_INVALID_PARAM似乎根本没有返回,因此makeReadOnly()方法通常不应返回false

 类似资料:
  • 工作的设备: 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 最后,对于不工作的器件,Logcat中会出现以下条目: 随着更现代的Android设备所提供的扩展

  • 我一直在开发一个应用程序,它使用NFC标签做一些魔术。 一切都很好,直到最近,我改变了一些代码,这些代码与之前一直有效的NFC代码无关。 当我通过NFC点击启动我的应用程序时,所有的工作,当我点击应用程序运行时,我将在onNewIntent()中收到未来的NFCTag。 当我通过图标启动应用程序并在应用程序运行时尝试点击时,会调用onNewIntent()方法,但当我试图从intent中获取额外的

  • 我是d3的新手,我正在尝试用它做一些数据可视化。我找到了一些关于如何在d3中创建时标的示例,但是当我按照示例尝试创建时标时,它失败了。我很沮丧,因为我想不出哪里出了问题...这个例子是这样的:如何使用d3.js在xAxis上格式化时间 这里的一些绘图代码……,最后: 然而,当我尝试时,我只能得到一个xAxis上的所有时间显示为“00:00”的图。这里出什么问题了?希望有人能帮帮我。谢谢!

  • 问题内容: 这是我跑步前表现出来的。 在对源代码进行一些更改之后,我运行并得到名为的图像。 我知道我可以用删除它们,但为什么首先发生这种情况?如何防止这种情况发生?在我建立这个样子的。 问题答案: 如果您将标签或图像名称重新分配给另一张图像,则您的图像将丢失其标签或名称。真的就是这么简单。您的标记回购图像与ID 用于命名和标记的图像ID 。

  • 我使用下面的示例代码来读取NFC标签,但它不是多次读取标签(有时读取3次,有时读取6-7次)。在我的应用程序中,我需要连续读取nfc标签。 https://github.com/andijakl/NfcDemo

  • 意法半导体的M24LR64 IC支持ISO 15693协议,在Android NFC中也称为NfcV。当我把我的Nexus S手机(Android4.0.4)放在我的原型标签板附近时,我能听到嘟嘟的一声,并看到一条由logcat发出的消息: 我想知道为什么android发送的是ACTION_TAG_DISCOVERED意图,而不是ACTION_NDEF_DISCOVERED,因为我在ST应用笔记之