我有一个设计个性化标签的应用程序,当它被安卓手机检测到时,会启动另一个包含一些内容的应用程序。一切正常,我知道如何制作只读 nfc 标签。问题是,我想让 NFC 标签只能由其他应用程序的用户读取。但我也希望,如有必要,修改这些标签以便重写。但我想阻止用户自己做。这就是为什么 ndef.makeReadOnly() 不适合我..
有人可以帮助我吗???
这在一定程度上取决于您将使用的确切标签。Android 支持的用于存储 NDEF 消息的标准 NFC 论坛标签类型没有为此定义特定功能。所以 Android API 也不提供它。只有makeReadOnly()
,这在大多数情况下使标签不可逆地只读。
但是,当您查看标签内部实际实现所需 NFC 功能的芯片时,它们通常会提供更多功能。这些额外功能可能包括写入访问控制,允许按照您的意愿配置芯片。
一些示例(全部由 NXP 制造,因为我最熟悉这些示例):
这些标签中的大多数通常都可以在线销售。不过,您将不得不在 Internet 上搜索一下以收集有关如何进行配置的所有信息。大多数情况下都有可用的 PC 软件。
使 NFC 标签“只读”的唯一 100% 方法是调用 makeReadOnly(),但这是不可逆的。
您可以使用“开箱即用”的解决方案,例如:
不要在 NFC 标签上写入数据,而是将其保存在本地(如果数据仅限于一台设备)或服务器/云(如果数据是全局的)
将您的 NFC 标签 ID (getByteArrayExtra(NfcAdapter.EXTRA_ID)) 与您保存的数据相关联
当读取 NFC 标签时,获取其 ID 并通过适当的来源(本地或云数据库)找到适当的数据
.. 如果第二个应用程序是“第三方应用程序”并且不能与上层灵魂一起工作,您可以注册自己的 NFC 阅读应用程序(使用正确的 mimeType 过滤器的意图),然后使用 sendIntent 将您的数据(第 3 点)传递给主应用程序(或类似的支持方法)。
希望能帮助到你!