2014-09-04 76 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

相關問題