【发布时间】:2014-09-04 04:27:46
【问题描述】:
我编写了这个程序,它可以读取 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阅读器应用读取标签,你会看到payload前后有一些数据,这是标签中的完整数据。
标签ic的类型是NTAG203
(05) D1 01 85 54 是数据的头部。
从(06) 02 65 6E 30 30 30 30 .....到(27) 30 30 30 31是payload的内容
我想获取标签中的所有数据,比如:
从 (00) 04 DB 39 64 ... 到 (05) 44 03 89
和 (28) 00 00 -- -- , (29) 00 00 -- --
如何使用android读取这些数据?
目的是,使用这些数据来保护我的产品,我会要求制造商在这些只读区域写入一些密钥,只有 NFC 卡有密钥才能使用我的应用程序,所以我需要读取这些数据。
【问题讨论】: