2014-09-04 378 views
0

我写了这个程序,它可以读取所有有效载荷在一个NFC标签如何使用android获取NFC标签中的完整数据?

@Override 
protected void onNewIntent(Intent intent) { 

    if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) { 

     Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); 

     if (rawMsgs != null) { 
      String payloadString=""; 
      NdefMessage[] msg = new NdefMessage[rawMsgs.length]; 
      for (int i = 0; i < rawMsgs.length; i++) { 
       msg[i] = (NdefMessage) rawMsgs[i]; 
       NdefRecord[] rec=msg[i].getRecords(); 
       byte[] byteArray=rec[0].getPayload(); 
       payloadString=new String(byteArray); 

       Log.v("log", payloadString); 
      } 
     } 
    } 
} 

我试图改变NfcAdapter.EXTRA_NDEF_MESSAGES不同的值,如:

NfcAdapter.EXTRA_ADAPTER_STATE, 
NfcAdapter.EXTRA_TAG, 
NfcAdapter.EXTRA_ID 

但是,没有人可以从数据标签

如果使用某个NFC读卡器应用程序读取标签,您会看到在有效载荷前后有一些数据,这是标签中的完整数据。

ntag203-1

ntag203-2

ntag203-3

标签IC的类型是NTAG203

(05)D1 01 85 54是数据的报头。

从(06)02 65 6E 30 30 30 30 .....(27)30 30 30 31我想在标签中的所有数据,比如负载

的内容:

从(00)04 39 DB 64 ...到(05)44 03 89

和(28)00 00 - - ,(29)00 00 - -

如何使用android来读取这些数据?

目的是,使用这些数据来保护我的产品,我会要求制造商在这些只读区域写入一些关键字,只有NFC卡有钥匙才能使用我的应用程序,所以我需要读取这些数据。

回答

1

Android NDEF API将为您提供该标记的NDEF内容,并且抽象出关于标记技术的所有细节。

如果你想从标签中读取原始数据,你需要使用android.nfc.tech。*类作为你正在阅读的特定标签类型。在这种情况下,NTAG203是2型Mifare Ultralight

您可以使用readPages(page)从标签中获取原始数据。

0

首先确定你有什么类型的卡,即Is07816等,然后尝试获取该数据,然后解码数据。

+0

请您详细说明您的答案,并增加关于您提供的解决方案的更多描述? – abarisone 2015-04-30 12:13:39

+0

NFC标签有很多不同的形状,例如Felica,Iso1443等,它们有不同的数据编码,所以对于卡的数据进行accessind和解码,你将不得不研究这些编码,然后你将能够读取完整的数据。在现代技术中,标签将数据作为APDU发送,所以你也可以学习管理APDU。这将有助于你完成你的申请。 – 2015-05-01 18:08:46

相关问题