我做我的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)标签。
通过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
。