NFC从getParcelableArrayExtra读取Android Java-null对象(NfcAdapter.EXTRA\u NDEF\u消息)

NFC从getParcelableArrayExtra读取Android Java-null对象(NfcAdapter.EXTRA\u NDEF\u消息),java,android,nfc,Java,Android,Nfc,我正在尝试实现一个简单的Android应用程序来读取NFC标签。 我按照官方文档()实际实现了一个几乎与“codexpedia”->创建的应用程序相同的应用程序 当标签靠近智能手机时,onNewIntent方法是call,但是,当我试图通过方法获取数据时,我总是得到null 您可以在以下直接链接中找到导致问题的代码 有人知道为什么会发生这种情况吗?ndefforformable技术意味着一旦格式化,卡就能够存储Ndef消息 所以基本上这张卡上没有Ndef信息,一旦它被格式化并放上Ndef信息,代

我正在尝试实现一个简单的Android应用程序来读取NFC标签。 我按照官方文档()实际实现了一个几乎与“codexpedia”->创建的应用程序相同的应用程序

当标签靠近智能手机时,onNewIntent方法是call,但是,当我试图通过方法获取数据时,我总是得到null

您可以在以下直接链接中找到导致问题的代码


有人知道为什么会发生这种情况吗?

ndefforformable
技术意味着一旦格式化,卡就能够存储Ndef消息

所以基本上这张卡上没有Ndef信息,一旦它被格式化并放上Ndef信息,代码就可以读取这张卡了

您可以使用NFC tools或NXP TagWriter应用程序等应用程序格式化和添加Ndef消息

格式化后,应显示
NfcV、Ndef
技术

代码中的错误

第80行-
IntentFilter tagDetected=新的IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED)

应该是
IntentFilter tagDetected=新的IntentFilter(NfcAdapter.ACTION\u NDEF\u DISCOVERED)

由于它假设所有卡都有Ndef消息可读取,因此未格式化卡、银行卡、大量运输卡等并非如此

第91至93行-
if(NfcAdapter.ACTION_TAG_DISCOVERED.equals(ACTION)| NfcAdapter.ACTION_TECH_DISCOVERED.equals(ACTION)| NfcAdapter.ACTION_NDEF_DISCOVERED.equals(ACTION)){

应该是
if(NfcAdapter.ACTION\u NDEF\u DISCOVERED.equals(ACTION)){

标签上有Ndef消息吗?使用NFC tools或NXP Taginfo App之类的应用程序检查标签上有什么。如果标签上没有Ndef消息,则该方法将返回null。因为链接的代码设置为使用
操作检测标签上没有Ndef消息的标签,然后假设它们是Nd如果我试图从PlayStore(NFC Writer)上的另一个应用程序读取标签,ef功能(因此代码中有一个bug)我看到了以下内容:
技术:NfcV,可解析DSF ID 0
响应标志0
最大收发长度253字节
。我假设它实际上说它包含一条Ndef消息?好的,非常感谢。还有一个问题:我可以请你也建议修改吗(或者链接到一个“简单”的链接)准备好的项目或文档链接)这可以帮助我理解如何读取每种格式?再次感谢您非常有用的支持我已经建议了修改,以修复codexpedia示例中的错误,因此它只尝试从带有Ndef消息的卡读取Ndef消息。有太多其他数据格式,如Ndef,无法记录。NfcV等低级卡类型记录在。您通常也可以从您试图阅读的卡的数据表中了解低级卡类型访问,但由于您没有指定卡的品牌和型号,我无法向您指出。