为什么我收到IOException异常时使NFC标签只读(Why I'm getting I

2019-10-19 06:45发布

我做我的NFC写在AsyncTasks doInBackground() 当我写NdefRecord它工作得很好,但是当我试图让只读我越来越标签IOException 。 这里是代码中发生异常:

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

这makeReadOnly工作具有Mifare超轻(MF0ICU1)标签。

Answer 1:

通过Android 4.4.2源(我没有与旧版本检查)浏览发现,你总是会得到一个IOException ,如果makeReadOnly()失败,无论出于何种原因。 所以,你在Android或至少与API文档不匹配发现了一个错误。

其原因是, android.nfc.tech.Ndef (见这里 ,开始对行383)预计NFC的服务来回报ErrorCodes.SUCCESS成功锁定, ErrorCodes.ERROR_INVALID_PARAM失败的锁定和ErrorCodes.ERROR_IO任何IO相关的错误。 但是,如果锁定成功的NFC服务返回ErrorCodes.SUCCESS(见这里 ,线1438)和ErrorCodes.ERROR_IO是否锁定任何原因而失败(见这里 ,线1440)。 ErrorCodes.ERROR_INVALID_PARAM似乎并没有被所有返回,因此makeReadOnly()方法通常应该不会返回false



文章来源: Why I'm getting IOException when making NFC tag read only
标签: android nfc ndef