Android 安卓:如何让NFC标签只为用户准备好,并为我写?

Android 安卓:如何让NFC标签只为用户准备好,并为我写?,android,tags,nfc,readonly,ndef,Android,Tags,Nfc,Readonly,Ndef,我有一个设计个性化标签的应用程序,当android手机检测到它时,它会启动另一个包含一些内容的应用程序。这一切都很好,我知道如何使一个只读nfc标签。问题是,我想让NFC标签只被其他应用程序的用户读取。但如果必要的话,我还想修改这些标签以便重写。但我想阻止用户自己做。 这就是ndef.makeReadOnly()不适合我的原因 有人能帮我吗?使NFC标记“只读”的唯一100%方法是调用makeReadOnly(),但这是不可逆的 您可以使用“开箱即用”解决方案,如: 不要在NFC标签上写入数据,

我有一个设计个性化标签的应用程序,当android手机检测到它时,它会启动另一个包含一些内容的应用程序。这一切都很好,我知道如何使一个只读nfc标签。问题是,我想让NFC标签只被其他应用程序的用户读取。但如果必要的话,我还想修改这些标签以便重写。但我想阻止用户自己做。 这就是ndef.makeReadOnly()不适合我的原因


有人能帮我吗?

使NFC标记“只读”的唯一100%方法是调用makeReadOnly(),但这是不可逆的

您可以使用“开箱即用”解决方案,如:

  • 不要在NFC标签上写入数据,而是将其保存在本地(如果数据仅限于一个设备)或服务器/云(如果数据是全局的)

  • 将NFC标记ID(getByteArrayExtra(NfcAdapter.EXTRA_ID))与保存的数据链接起来

  • 读取NFC标记时,获取其ID并通过适当的源(本地或云数据库)查找适当的数据

  • 。。如果第二个应用程序是“第三方应用程序”,并且无法与upper soultion一起使用,则您可以注册自己的NFC阅读应用程序(使用右侧mimeType筛选器的intent),然后使用sendIntent(或类似支持的方法)将数据(第3点)传递给主应用程序


    希望有帮助

    这在某种程度上取决于您将使用的确切标签。Android支持的用于存储NDEF消息的标准NFC论坛标记类型没有为此定义特定功能。所以Android API也没有提供它。只有
    makeReadOnly()
    ,在大多数情况下,它使标记不可逆地只读

    然而,当你看到标签中实际实现所需NFC功能的芯片时,它们通常提供更多功能。这些额外功能可能包括写入的访问控制,允许按照您的需要配置芯片

    一些示例(都是由NXP制造的,我最熟悉这些示例):

  • MIFARE Classic:内存扇区由2个键保护。一个键可配置为只读,而另一个键可用于写入内存。注意:不是所有的安卓设备都可以访问这些
  • MIFARE Ultralight C:可以提供额外的密码保护以防止覆盖
  • MIFARE DESFire:可以配置多个身份验证密钥和访问权限,包括不带密钥的只读访问
  • ICODE SLI(X)-S:可以提供额外的密码保护以防止覆盖
  • 这些标签中的大多数通常可在线销售。不过,您必须在互联网上搜索一些信息,以收集有关如何进行配置的所有信息。大多数情况下都有PC软件可用