ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android – 验证后写入NTAG216?

2019-07-06 12:34:56  阅读:374  来源: 互联网

标签:authentication android nfc ndef mifare


我正在使用这段代码验证我的标签

nfcA.connect();
byte[] authResponse = nfcA.transceive(new byte[]{
                (byte)0x1b,
                pwd[0], pwd[1], pwd[2], pwd[3]
        });
nfcA.close();

我检查了authResponse的结果,它等于我的包.在进行身份验证之后,我使用Ndef类的writeNdefMessage()方法编写NDEF内容,但我无法编写.

This是我找到验证标签的方法.

这是我的方法:

>验证标签(使用那段代码)
>如果身份验证的响应等于我的包,请继续编写NDEF消息

但是,每当我调用writeNdefMessage()时,我都会得到一个java.io.IOException.

解决方法:

您无法写入的原因是您在实际写入标记之前再次丢失了身份验证状态.对于大多数设备(虽然存在一些例外情况!),调用tag.connect()/ tag.close()将导致标签被重新激活,从而失去其身份验证状态.因此,您需要在同一连接中进行身份验证和写入.

由于您无法通过Ndef抽象发送低级命令,这意味着您必须使用低级命令进行所有写入操作.即您必须自己为该特定标记类型(在您的情况下为NFC论坛类型2标记操作规范)重新实现NDEF抽象层,并逐页编写NDEF消息.

由于NTAG216应该被发现为MifareUltralight,最简单的方法是使用MifareUltralight连接.那你好吧

>进行身份验证:

mfu.transceive(new byte[]{ (byte)0x1b, pwd[0], pwd[1], pwd[2], pwd[3] });

>逐页编写标签(您可能需要编写第4页及以后页面,其中包含包含在标签为0x03的TLV结构中的NDEF消息,如果您需要对页面3进行任何更改,您可能还需要编写第3页能力容器):

mfu.write(pageNumber, data)

其中data是要写入pageNumber的四字节数据值.

标签:authentication,android,nfc,ndef,mifare
来源: https://codeday.me/bug/20190706/1397488.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有