如何使用android获取NFC标签中的完整数据?

时间:2014-09-04 04:27:47

标签: java android nfc

我写了这个程序,可以读取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 DB 39 64 ...到(05)44 03 89

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

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

目的是,使用这些数据来保护我的产品,我会要求厂商给这些只读区域写一些密钥,只有NFC卡才能使用我的app,所以我需要读取这些数据。

2 个答案:

答案 0 :(得分:3)

Android NDEF API将为您提供标签的NDEF内容,并抽象有关标签技术的所有详细信息。

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

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

答案 1 :(得分:0)

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