我写了这个程序,可以读取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阅读器应用程序来阅读标签,您会看到有效载荷前后有一些数据,这是标签中的完整数据。
标签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,所以我需要读取这些数据。
答案 0 :(得分:3)
Android NDEF API将为您提供标签的NDEF内容,并抽象有关标签技术的所有详细信息。
如果要从标记中读取原始数据,则需要对正在阅读的特定标记类型使用android.nfc.tech。*类。在这种情况下,NTAG203是类型2 Mifare Ultralight。
您可以使用readPages(page)从标记中获取原始数据。
答案 1 :(得分:0)
首先确定您拥有的卡类型,即Is07816等,然后尝试获取该数据然后解码数据。