我正在开发一款NFC应用程序,在公共场所将使用标签。因此,需要使用密码或其他工具锁定标签,以避免有人删除信息或修改其内容。标签应该可以在以后进行更新。那么,是否可以实现这一点?或者当我锁定一个标签时,它会永久保持只读状态吗?
这在很大程度上取决于您使用的NFC标签类型(因此价格也不同)。典型的便宜的NFC标签(例如,如Topaz/Jewel的Type 1标签或MIFARE Ultralight、NTAG203、Kovio 2K或my-d NFC等Type 2标签)不允许这样做。它们只能被永久性地写保护(当在公共场所安装标签时,这通常是您应该采取的措施)。
其他标签提供了一些基于身份验证的访问控制形式,可用于限制对标签存储器的写访问权限,例如:
身份验证不是NFC Forum的标签操作规范的一部分,因此它与标签/标签制造商相关。为了在Android上使用这种高级功能,您需要自己实现相关命令(使用tech.transceive()
方法)。
请注意,Android上的Ndef.makeReadOnly()
并不一定设置任何硬件锁定位。在某些情况下,此方法可能只在协议级别上设置写保护(即设置一个请求NFC设备不写入任何数据的标志,但不保护实际数据页面免受被覆盖的影响)。
当然可以,但Android API没有现成的方法来实现它。 您需要使用APDU来控制对标签的访问。
Ndef类有一个makeReadOnly方法:http://developer.android.com/reference/android/nfc/tech/Ndef.html#makeReadOnly(),但您无法解锁标签。