gpt4 book ai didi

android - 为什么在将 NFC 标签设置为只读时出现 IOException

转载 作者:行者123 更新时间:2023-11-30 03:07:39 27 4
gpt4 key购买 nike

我正在AsyncTasks doInBackground() 中编写NFC。当我编写 NdefRecord 时,它运行良好,但当我试图使标签只读时,我得到了 IOException。这是发生异常的代码:

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

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

最佳答案

浏览 Android 4.4.2 源代码(我没有检查旧版本)显示如果 makeReadOnly() 出于任何原因失败,您将始终得到 IOException .因此,您在 Android 中发现了错误,或者至少与 API 文档不匹配。

原因是 android.nfc.tech.Ndef(参见 here,从第 383 行开始)期望 NFC 服务返回 ErrorCodes.SUCCESS 表示成功锁定,ErrorCodes.ERROR_INVALID_PARAM 表示锁定失败,ErrorCodes.ERROR_IO 表示任何 IO 相关错误。但是,如果锁定成功,NFC 服务将返回 ErrorCodes.SUCCESS(参见 here,第 1438 行),如果锁定因任何原因失败,则返回 ErrorCodes.ERROR_IO(参见 here,第 1440 行)。 ErrorCodes.ERROR_INVALID_PARAM 似乎根本不会返回,因此 makeReadOnly() 方法通常永远不会返回 false

关于android - 为什么在将 NFC 标签设置为只读时出现 IOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21529387/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com